- XBOX services クライアント XBOX services で認証されたクライアントから呼び出されます。これらの呼び出しは常にユーザー コンテキスト内で行われます。
- サービス間 (Service-to-service) カスタム タイトル Web サービスからサービス間 XBOX services 呼び出しを介して行われます。これらの呼び出しは、ユーザーに代わって、またはサービスとして直接行われます。 タイトル サービスからの呼び出しの詳細については、タイトル サービスから XBOX services への呼び出し を参照してください。
クライアントから XBOX services への呼び出し
Microsoft Game Development Kit (GDK) を使用したすべての XBOX services への呼び出しには、Microsoft Game Development Kit (GDK) リリースにバンドルされている XBOX Service API (XSAPI) を使用することを強くお勧めします。これらの API は HTTP 要求を処理し、利用可能なサービス データをオブジェクトを通じてタイトルに直接返します。また、XBOX services と認証で推奨される接続とキャッシュの動作を実装しています。これらの API の詳細については、XBOX Service API ドキュメントの XSAPI リファレンス を参照してください。 以下のセクションは、XBOX services 認証の完全性と深い理解のためだけに提供されます。初期設定
XBOX services はすべてのタイトルに対して透過的にプリコンフィグレーションされています。追加のエンドポイント設定は不要です。これはすべての*.xboxlive.com サブドメインに適用されます。
トークン取得と接続フロー
XBOX services のエンドポイントを使用するには、XSTS 認証トークンとメッセージ署名が存在する必要があります。この情報がない場合、サービスとの通信は拒否されます。 XSTS トークンとユーザー識別 (user hash) を要求のAuthentication ヘッダーに含める必要があります。メッセージ署名は要求の Signature ヘッダーに指定する必要があります。これらのヘッダーの構造の詳細については、XBOX services セキュリティ トークン (XSTS トークン) を参照してください。
XSTS トークンの取得
XSTS トークンと署名ヘッダー データは、XUserGetTokenAndSignatureUtf16Async API を通じて取得されます。これは、サービス要求に必要なヘッダーを提供します。 その後、タイトルは次のフローでXUserGetTokenAndSignatureUtf16Async API を使用して、XBOX services エンドポイントの XSTS トークンを要求します。
- 現在のユーザーで
XUserGetTokenAndSignatureUtf16Asyncを呼び出します。API 呼び出しに XBOX services の URL と必要なヘッダーまたはメッセージ本文を含めます。 この API 呼び出しは、XBOX services エンドポイントの XSTS トークンを取得します。呼び出しは、メッセージと事前定義されたヘッダーに対するメッセージ署名を生成します。 - 非同期結果から
XUserGetTokenAndSignatureUtf16Resultを介して XSTS トークンと署名を取得します。XUserGetTokenAndSignatureUtf16Resultは暗号化された XSTS トークンを返します。タイトルは返されたトークンを不透明なデータとして扱う必要があります。トークン データは、次のサービス呼び出しを超えてディスクに書き込んだり、タイトル領域にキャッシュしたりしてはなりません。 - Microsoft Windows HTTP Services (WinHTTP)、xCurl、および XSTS トークンを、HTTPS 要求の Authorization ヘッダーで適宜使用します。
トークンの有効期限と更新
XSTS トークンは特定の期間のみ有効です。XSTS トークンの既定の有効期限は 4 時間です。各トークンにはタイムスタンプが含まれており、すべての XBOX services で検証されます。 新しい認証やサインイン要求ごとに XUserGetTokenAndSignatureUtf16Async API を使用する必要があります。XUserGetTokenAndSignatureUtf16Async はトークンの有効期限とキャッシュを処理します。この API は、タイトルが常に有効なトークンを受信することを保証します。タイトルはこれ以外の方法でトークンをキャッシュしてはなりません。
期限切れまたは無効なトークンが XBOX services エンドポイントに提示されると、HTTP/401 エラーが返されます。