XSTS 토큰 또는 OAuth 2.0을 사용하여 서비스에서 사용자 스토어 ID 요청
이 항목에서는 게임 클라이언트에서 액세스 토큰과 사용자 저장소 ID를 교환하지 않고도 서비스에서 서비스의 사용자 저장소 ID를 생성할 수 있는 방법에 대해 설명합니다. 다음 시나리오는 사용자 저장소 ID를 생성하는 이 방법에 도움이 됩니다.
- 흐름 내에 게임 클라이언트가 없는 환경
- 사용자의 Xbox 계정을 사용자의 서비스 계정에 연결
- 클라이언트-서비스 및 서비스-서비스 호출에 대해 XSTS 토큰 인증을 이미 사용하고 있는 게임 및 서비스
일반적인 사용자 저장소 ID에 대한 정보는 서비스 간 인증을 위한 사용자 저장소 ID 요청을 참조하십시오.
XSTS 토큰 요구 사항
이 프로세스에서는 사용자 저장소 ID가 나타낼 사용자를 식별하기 위해 위임된 인증 XSTS 토큰을 사용해야 합니다.
위임된 인증 XSTS 토큰 및 생성 방법에 대한 자세한 내용은 Xbox 서비스에 대한 타이틀 서비스 호출(NDA 주제)권한 부여 필요을 참조하세요.
사용자 저장소 ID를 생성하기 위한 OAuth 2.0 요구 사항
서비스가 OAuth를 사용하여 사용자가 자신의 Microsoft 계정(MSA)으로 로그인하도록 하는 경우 다음이 필요합니다.
- OAuth 자격 증명을 XSTS 토큰으로 교환해야 하므로 사용자는 Microsoft 계정에 연결된 Xbox ID가 있어야 합니다(위 참조).
- 요청하는 OAuth 범위에는 이 흐름에 대한 적절한 사용자 동의와 필수 XSTS 토큰 검색 기능을 보장하기 위해
xboxlive.signin
및xboxlive.offline_access
가 모두 포함되어야 합니다.
서비스에서 OAuth로 Xbox 서비스 로그인을 사용하는 방법에 대한 자세한 내용은 타이틀 웹 사이트에 대한 Xbox 서비스 로그인(NDA 주제)권한 부여 필요을 참조하세요.
OAuth 2.0 자격 증명을 사용하는 단계
OAuth를 사용하면 사용자의 동의를 얻고 OAuth 자격 증명과 토큰을 교환하여 자신의 신뢰 당사자에 대해 사용자를 위한 XSTS 토큰을 생성할 수 있습니다. 사용자에 대한 XSTS 토큰이 있으면 아래의 XTSTS 토큰 사용 단계에 설명된 것과 동일한 흐름에서 사용합니다.
XSTS 토큰에 대한 OAuth 자격 증명을 교환하기 위한 개요 흐름:
- OAuth 2.0 인증 코드 받기
- RPS 토큰(Microsoft 계정 액세스 토큰이라고도 함)에 대한 인증 코드 교환
- RPS 토큰을 Xbox 사용자 토큰으로 교환
- Xbox 사용자 토큰을 자신의 신뢰 당사자에 대한 XSTS 토큰으로 교환
- 아래의 XTSTS 토큰 사용 단계에서 X-토큰을 사용하세요.
위 단계의 전체 구현 세부 정보는 타이틀 웹 사이트에 대한 Xbox 서비스 로그인(NDA 주제)권한 부여 필요을 참조하세요.
XSTS 토큰 사용 단계
신뢰 당사자의 사용자를 식별하는 XSTS 토큰이 있으면 토큰에서 DelegationToken 클레임을 사용하여 사용자 저장소 ID를 만드는 데 필요한 위임된 인증 XSTS 토큰을 만들 수 있습니다. 이 흐름의 초기 XSTS 토큰은 게임 클라이언트 또는 위에 나열된 OAuth2.0 흐름에서 가져올 수 있습니다.
Delegated Auth XSTS 토큰을 만들기 위한 개요 흐름:
- 사용자의 XSTS 토큰에서 DelegationToken 클레임(dlt)을 추출합니다.
- 비즈니스 파트너 인증서를 사용하여 XSAS 서비스에서 서비스 토큰을 얻습니다.
- DelegationToken, 서비스 토큰 및 대상 신뢰 당사자(아래 표 참조)를 Delegated Auth XSTS 토큰으로 교환합니다.
위임된 인증 XSTS 토큰을 만드는 방법에 대한 전체 구현 세부 정보는 Xbox 서비스에 대한 타이틀 서비스 호출(NDA 주제)권한 부여 필요을 참조하세요.
3단계에서 사용할 신뢰 당사자는 사용자에 대한 사용자 컬렉션 ID 또는 사용자 구매 ID를 생성하는지 여부에 따라 다릅니다.
사용자 스토어 ID 유형 | 위임된 인증 XSTS 토큰 신뢰 당사자 | 사용자 스토어 ID를 생성하기 위한 URI |
---|---|---|
사용자 컬렉션 ID | http://licensing.xboxlive.com |
https://collections.mp.microsoft.com/v7.0/beneficiaries/me/keys |
사용자 구매 ID | http://mp.microsoft.com/ |
https://purchase.mp.microsoft.com/v7.0/users/me/keys |
요청
사용자와 해당 신뢰 당사자에 대해 위임된 인증 XSTS 토큰이 있으면 사용자 저장소 ID를 요청할 수 있습니다.
이를 위해 생성 중인 사용자 저장소 ID 유형에 따라 해당 URI에 대한 HTTPS POST 요청을 수행합니다(위 표 참조).
요청 구문
메서드 | 요청 URI |
---|---|
POST |
collections.mp.microsoft.com/v7.0/beneficiaries/me/keys |
POST |
purchase.mp.microsoft.com/v7.0/users/me/keys |
요청 헤더
헤더 | 형식 | 설명 |
---|---|---|
Authorization |
string |
필수. XBL3.0 x=[User Hash];[Token] 형식에서 사용자를 나타내는 위임된 인증 XSTS 토큰 |
Host |
string |
호출되는 URI의 호스트와 일치해야 합니다. |
Content-Length |
number |
요청 본문의 길이입니다. |
Content-Type |
string |
요청 및 응답 유형을 지정합니다. 현재 지원되는 유일한 값은 application/json 입니다. |
요청 본문
매개 변수 | 형식 | 설명 | 필수 |
---|---|---|---|
serviceTicket |
string |
호출하는 URI를 기반으로 하는 서비스의 컬렉션 액세스 토큰 또는 구매 액세스 토큰입니다. 이러한 액세스 토큰을 만드는 방법에 대한 자세한 내용은 다양한 토큰 및 대상 URI 이해를 참조하세요. | 예 |
publisherUserId |
string |
사용자 스토어 ID에 스탬프가 찍히고 자체 추적에 사용할 수 있는 선택적 값 | 아니요 |
요청 예제
POST https://collections.mp.microsoft.com/v7.0/beneficiaries/me/keys HTTP/1.1
Authorization: XBL3.0 x=13178812777611882182;eyJlbmMiOiJBMTI4Q0JDK...
Content-Length: 1352
Content-Type: application/json;
Host: collections.mp.microsoft.com
{
"serviceTicket": "eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsIn...",
"publisherUserId": "CustomPublisherUserId"
}
응답
응답 본문
매개 변수 | 형식 | 설명 | 필수 |
---|---|---|---|
key |
string |
Microsoft Store Services에서 서비스 간 인증에 사용할 수 있는 사용자 저장소 ID | 예 |
응답 예제
HTTP/1.1 200 OK
Date: Wed, 23 Mar 2022 23:06:25 GMT
Content-Type: application/json;
Content-Length: 1716
MS-CorrelationId: dd5be303-f9a0-408a-bd01-e8c63afa721a
MS-RequestId: 0b9c8e5e-dfdd-4cf8-bfbe-93a5be3a7f48
MS-CV: rqFUH3gA+UOmTyXe.0
{"key":"eyJhbGciOiJSUzI1NiIsImtpZCI6IjY..."}
참고 항목
Microsoft Store API를 사용하여 서비스 인증
Xbox 서비스에 대한 타이틀 서비스 호출(NDA 주제)권한 부여 필요