XSTS トークンまたは OAuth 2.0 を使用してサービスからユーザー Store IDを要求する
このトピックでは、ゲーム クライアントからアクセス トークンとユーザー Store ID を交換することなく、サービスからユーザーストア ID を生成する方法について説明します。 以下のシナリオは、このユーザー Store ID の生成方法に役立ちます。
- フロー内にゲームクライアントがないエクスペリエンス
- ユーザーの Xbox アカウントを、ユーザー独自のサービス アカウントにリンクする
- クライアントからサービスへの呼び出しおよびサービス間呼び出しに XSTS トークン認証を既に使用しているゲームおよびサービス
ユーザー Store ID 全般については、「サービス間認証にユーザー Store ID を要求する」を参照してください。
XSTS トークンの要件
このプロセスでは、代理認証 XSTS トークンを使用して、ユーザー Store ID が表すユーザーを識別する必要があります。
委任認証 XSTS トークンとその作成方法の詳細については、「Xbox Live サービスへのタイトル サービス呼び出し (NDA トピック)認可が必須です」を参照してください。
ユーザー Store ID を生成するための OAuth 2.0 の要件
サービスで OAuth を使用してユーザーが Microsoft アカウント (MSA) でサインインするようにする場合は、次のものが必要です。
- OAuth 資格情報を XSTS トークンと交換する必要があるため、ユーザーは Xbox ID を Microsoft アカウントに関連付ける必要があります (上記参照)。
- 要求する OAuth スコープには、このフローに対する適切なユーザーの同意と、必要な XSTS トークンを取得する機能を確保するために、
xboxlive.signin
とxboxlive.offline_access
の両方を含める必要があります。
サービスで OAuth で Xbox サービス ログインを使用する方法の詳細については、「タイトル Web サイトの Xbox サービス サインイン (NDA トピック)認可が必須です」を参照してください。
OAuth 2.0 資格情報を使用する場合の手順
OAuth を使用すると、ユーザーの同意を得て、OAuth の資格情報とトークンを交換して、ユーザー用の XSTS トークンを独自の証明書利用者に対して作成できます。 ユーザーの XSTS トークンを取得したら、以下の 「XSTS トークンを使用する場合の手順」 で概説されているのと同じフローで使用します。
OAuth 資格情報を XSTS トークンと交換するためのアウトライン フロー:
- OAuth 2.0 認証コードを取得する
- 認証コードを RPS トークン (Microsoft アカウント アクセス トークンとも呼ばれます) と交換する
- RPS トークンを Xbox ユーザー トークンと交換する
- Xbox ユーザー トークンを独自の証明書利用者に対して XSTS トークンと交換する
- 以下の 「XSTS トークンを使用する場合の手順」 の X トークンを使用します。
上記の手順の完全な実装の詳細については、「タイトル Web サイトの Xbox サービス サインイン (NDA トピック)認可が必須です」を参照してください。
XSTS トークンを使用する場合の手順
独自の証明書利用者のユーザーを識別する XSTS トークンを取得したら、トークン内の DelegationToken 要求を使用して、ユーザー Store ID の作成に必要な委任認証 XSTS トークンを作成できます。 このフローの初期 XSTS トークンは、ゲーム クライアントから取得することも、上記の OAuth2.0 フローから取得することもできます。
委任認証 XSTS トークンを作成するためのアウトライン フロー:
- ユーザーの XSTS トークンから DelegationToken 要求 (dlt) を抽出します。
- ビジネス パートナー証明書を使用して、XSAS サービスからサービストークンを取得します。
- 委任トークン、サービス トークン、ターゲット証明書利用者 (以下の表を参照) を、委任認証 XSTS トークンと交換します。
委任認証 XSTS トークンの作成方法に関する完全な実装の詳細については、「Xbox サービスへのタイトル サービス呼び出し (NDA トピック)認可が必須です」を参照してください。
手順 3 では、使用する証明書利用者は、ユーザーのユーザー コレクション ID またはユーザー購入 ID のどちらを生成するかによって異なります。
ユーザー Store ID の種類 | 証明書利用者用の委任認証 XSTS トークン | ユーザー Store 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 トークンを取得したら、ユーザー Store ID を要求できます。
これを行うには、生成するユーザー Store 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 |
必須。 ユーザーを形式で表す委任された認証 XSTS トークン XBL3.0 x=[User Hash];[Token] |
Host |
string |
呼び出される URI のホストと一致する必要があります。 |
Content-Length |
number |
要求本文の長さ。 |
Content-Type |
string |
要求と応答の種類を指定します。 現在唯一サポートされている値は application/json です。 |
リクエストの本文
パラメーター | 型 | 説明 | 必須かどうか |
---|---|---|---|
serviceTicket |
string |
サービスのコレクション アクセス トークンまたは購入アクセス トークンは、呼び出している URI に基づいて行います。 これらのアクセス トークンの作成については、「さまざまなトークンと対象ユーザー URI について」 を参照してください。 | はい |
publisherUserId |
string |
ユーザー Store 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 サービスでのサービス間認証に使用できるユーザー Store 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 トピック)認可が必須です
タイトル web サイト用 Xbox サービス サインイン (NDA トピック)認可が必須です