Photon Steam 인증
서버 환경 구성
- "deploy\NameServer\bin\NameServer.xml.config"을 엽니다.
- CustomAuth가 활성화가 되어있는지 확인해 주시고, 필요시 true로 활성화합니다.
- 선택 사항으로 필요에 따라 AllowAnonymous를 true 또는 false로 설정합니다.
false로 설정하는 것을 권장합니다. - Steam 인증 공급자 유형인 AuthenticationType를 "1" 로 설정합니다.
- 이름을 선택합니다. 우리는 이 예제에서 "Steam"으로 사용했으며 변경하실 수 있습니다.
- 내부적으로 인증 엔드포인트를 사용하기 때문에 "AuthUrl"은 필요하지만 빈 문자열로 설정합니다.
- 다음은 Steam의 필수 항목들에 대한 명세 및 설명입니다:
XML
<CustomAuth Enabled="true" AllowAnonymous="false">
<AuthProviders>
<AuthProvider Name="Steam"
AuthenticationType="1"
AuthUrl=""
apiKeySecret="Val1"
appid="Val2"
verifyOwnership="true"
verifyVacBan="true"
verifyPubBan="true" />
</AuthProviders>
</CustomAuth>
- apiKeySecret: Steam 퍼블리셔 Web API 키입니다. 키를 받는 방법에 대해서는 여기를 읽어보십시오.
- appid: Steam의 ID입니다. 전에 Steam Greenlight로 알려져 있는 Steam Direct 프로세스를 통해 받을 수 있습니다.
- verifyOwnership:
true
또는false
가 될 수 있습니다: 인증하는 동안 소유권 검증을 사용하거나 사용하지 않도록 합니다.
이를 통해 사용자가 게임에 대해 진짜 소유하고 있는지 여부에 대해 검증할 수 있습니다.(게임을 구매했고 라이브러리에 가지고 있는지) .
이 단계에서, 사용하도록 되어 있다면, 사용자 세션 티켓 확인 후 바로 수행됩니다.
이것을 사용하게 하면 인증 시 추가적인 지연이 발생할 수 있으므로 필요할 때만 사용하도록 합니다. - verifyVacBan:
true
또는false
가 될 수 있습니다: 인증할 때 Valve의 Anti-Cheat(VAC)을 사용하여 사용자가 추방되었는지 여부를 확인합니다.
여기에서 상세 내용을 확인하십시오.
이를 사용하는 것은 인증 시 추가적인 지연이 발생할 수 있으므로 필요할 때만 사용하도록 합니다. - verifyPubBan:
true
또는false
가 될 수 있습니다: 인증 시 퍼블리셔 밴을 사용하여 사용자가 추방되었는지 확인합니다.
여기에서 상세 내용을 확인하십시오.
이를 사용하는 것은 인증 시 추가적인 지연이 발생할 수 있으므로 필요할 때만 사용하도록 합니다.
클라이언트 코드(유니티)
클라이언트는 반드시 Valve의 Steamworks API를 사용하여 세션 티켓을 받아야 합니다.
이 티켓은 클라이언트가 유효한 Steam 사용자임을 증명해 줍니다.
Steamworks.NET
Steamworks.NET은 Steamworks API 래퍼의 인기 있는 무료, 오픈 소스입니다.
Steamworks.NET의 유니티 버전의 임포트는 이 페이지에 있는 지침을 따라 해 보세요.
티켓 받기
다음 코드를 사용하여 Steamworks API를 사용하여 세션 티켓을 얻은 후 16진수 인코딩 UTF-8 문자열로 변환합니다:
C#
// hAuthTicket should be saved so you can use it to cancel the ticket as soon as you are done with it
public string GetSteamAuthTicket(out HAuthTicket hAuthTicket)
{
byte[] ticketByteArray = new byte[1024];
uint ticketSize;
hAuthTicket = SteamUser.GetAuthSessionTicket(ticketByteArray, ticketByteArray.Length, out ticketSize);
System.Array.Resize(ref ticketByteArray, (int)ticketSize);
StringBuilder sb = new StringBuilder();
for(int i=0; i < ticketSize; i++)
{
sb.AppendFormat("{0:x2}", ticketByteArray[i]);
}
return sb.ToString();
}
티켓 전송
클라이언트는 쿼리 문자열 키 "ticket"의 값으로 사용자의 세션 티켓(16진수 인코딩 UTF-8 문자열로 변환한 후)을 전송해야 합니다.
티켓 취소
인증이 완료되면 티켓을 취소하거나 원복하는 것이 좋습니다.
Facepunch.Steamworks
Facepunch.Steamworks은 Steamworks API를 구현할 수 있는 또 다른 무료인 오픈 소스입니다.
Facepunch.Steamworks를 임포트 하시려면이 페이지에 있는 지침서를 따라 하세요.
티켓 얻기
다음 코드를 사용하여 세션 티켓을 얻고 16진수 인코딩된 UTF-8 문자열로 변환합니다:
C#
// authTicket should be saved so you can use it to cancel the ticket as soon as you are done with it
public string GetSteamAuthTicket(out AuthTicket authTicket)
{
authTicket = SteamUser.GetAuthSessionTicket();
StringBuilder ticketString = new StringBuilder();
for (int i = 0; i < authTicket.Data.Length; i++)
{
ticketString.AppendFormat("{0:x2}", authTicket.Data[i]);
}
return ticketString.ToString();
}
티켓 전송
클라이언트는 사용자의 세션 티켓을 쿼리 문자열 키 "ticket"의 값으로(16진주 인코딩된 UTF-8 스트링으로 변환 후)로 전송해야 합니다.
티켓 취소
인증이 완료된 이후 취소 또는 원복하는 것이 권장됩니다.
Back to top