플레이어 공유 시크릿
플레이어 공유 시크릿은 게임 클라이언트 간에 공유되는 새로운 유형의 유사 시크릿 키입니다. API를 사용하여 타이틀의 공개 RSA 키와 교환할 수 있으며, 계정 등록을 수행하는 데 사용할 수 있습니다. 타이틀은 여러 플레이어 공유 키를 가질 수 있으며, Admin API 호출 Create, Update, Delete, List를 통해 원하는 대로 설정하고 취소할 수 있습니다. 플레이어 공유 시크릿은 각 클라이언트에 내장되어야 합니다. 인증되었든 아니든 이를 검색하는 클라이언트 API가 없기 때문입니다.타이틀 공개 키
그런 다음 플레이어 공유 시크릿은 GetTitlePublicKey로 전송됩니다. 키가 유효한 경우 API는 237바이트의 데이터를 암호화할 수 있는 Base 64 인코딩된 RSA CSP blob 바이트 배열을 반환합니다. 계정을 만들 수 있게 하는 모든 API는 이제 등록 요청을EncryptedRequest 필드에 암호화된 페이로드로 게시하는 것을 허용합니다.
표준 필드
TitleId, InfoRequestParameters, **CreateAccount**은 암호화된 페이로드에 포함되어서는 안 됩니다.타이틀 공개 키를 사용해 등록
다음은LoginWithCustomID와 타이틀 공개 키를 사용해 플레이어를 등록하는 예제 코드입니다.
플레이어 시크릿
새 등록 시스템의 일부는PlayerSecret이라는 새 필드입니다. 설정된 경우 로그인 요청을 포함한 모든 서비스에 대한 API 호출 중 서버가 검증하는 요청 헤더에 서명할 수 있습니다.
플레이어 시크릿은 타이틀별로 사용자당 한 번만 설정할 수 있습니다. 동일한 스튜디오에 여러 타이틀이 있는 사용자는 각각에 대해 플레이어 시크릿을 설정해야 합니다.
등록 중 플레이어 시크릿이 이미 설정되지 않은 경우 SetPlayerSecret을 호출하여 설정할 수 있습니다. 이전에 설정되었더라도 플레이어 시크릿을 새 값으로 설정할 수 있는 관리자 및 서버 API가 있습니다.
설정된 후 플레이어 시크릿은 잃어버리면 복구할 수 없고 이를 복구하는 API도 존재하지 않으므로 장치에 안전하게 저장되어야 합니다.
플레이어 시크릿을 사용해 API 요청 서명
다음 코드 예제는 API 요청을 서명하는 데 사용할 수 있는 서명 헤더를 구성합니다. 서명 헤더의 형식은 아래에 표시됩니다.jsonRequestModel.utcTimeStampInISO.playerSecret
정책 시행 사용
API 정책은 이제 이러한 시나리오를 시행하는 데 사용할 수 있습니다.- 클라이언트 요청은 암호화된 페이로드입니다.
- 클라이언트 요청에는 서명된 헤더가 포함되어 있습니다.
Deny 문을 사용합니다. 이렇게 하면 Allow 문에서 허용되지 않는 배치할 수 있는 모든 호출에 헤더가 필요한 정책이 생성됩니다.
정책 문에는 ApiConditions라는 속성이 있습니다. ApiConditions에는 세 가지 가능한 값을 가진 열거형인 HasSignatureOrEncryption이라는 속성이 포함되어 있습니다.
AnyTrueFalse
기본값(정책에 의해 설정되지 않은 경우)은 **
Any**입니다.LoginWithCustomID에 대한 모든 API 호출(암호화되지 않았거나 헤더가 없는 호출 제외)을 허용합니다.
Deny 문에는 HasSignatureOrEncryption: False가 포함됩니다. 이는 서명 또는 암호화가 없는 모든 요청이 거부됨을 의미합니다. 즉, 서명 헤더 또는 암호화가 있는 모든 요청은 Allow the rest policy를 기반으로 허용됩니다.