認証の概要
ユーザーの認証を有効にし、XBOX services データへのアクセス認可を取得するプロセスは 3 つのステップで構成されます。最初のステップは 1 回限りのプロビジョニング手順です。 Web サイトの登録- Web サイトまたは Web アプリは、Microsoft アカウントで使用するための ID をプロビジョニングします。
- この登録はパブリッシャーの Microsoft Entra ID で行われます。
- ユーザーが Web サイトにアクセスするか、アプリを起動します。
- ユーザーは OAuth2.0 エンドポイント経由で Microsoft アカウントにログインするようにリダイレクトされます。
- ユーザーは資格情報を正常に入力し、Web サイトまたはアプリが自分に代わって XBOX services 情報にアクセスすることに同意します。
- Web サイトまたはアプリは認可コードを受け取ります。
- Web サイトまたはアプリは、認可コードを利用し正しいスコープを要求して、アクセス トークンを要求します。
- Web サイトまたはアプリはアクセス トークン (および要求した場合はリフレッシュ トークン) を受け取ります。
- Web サイトまたはアプリはアクセス トークンを使用して、XBOX services ユーザー トークン (U トークン) を要求します。
- その後、ユーザー トークンを使用して、XBOX Security Token Service (XSTS) から X トークン (アクセス トークン) を取得し、XBOX services またはタイトル サービスにアクセスします。
Web サイトの登録
Microsoft アカウントを使用して Web サイトにユーザーを認証できるようにするには、まず Microsoft Entra ID アプリ登録インターフェイスを介して Web サイトまたはアプリを登録する必要があります。- Microsoft Entra ID 内でアプリを登録する権限を持つアカウントで Azure Portal にログインします。
- “App Registration” を選択します。
- ”+ New Registration” を選択します。
- このアプリケーションの名前を入力します。
- “Supported account types” では “Personal Microsoft accounts only” を選択します。
- 認証が成功した後、認証フローがユーザーをリダイレクトする先のリダイレクト URL を入力します。後で必要になるのでメモしておいてください。 後で追加の URI も追加できます。
- アプリ登録を完了します。
- Application (client) ID と Directory (tenant) ID をメモしておきます。
- Certificates & Secrets を選択します。
- ”+ New Client Secret” を選択します。
- 説明を入力します。
- 有効期限の範囲を選択します。
- Add をクリックします。
- 作成されたクライアント シークレット値は後で必要になるのでメモしておいてください。この値はサービス上でのみ安全に使用および保存する必要があります。
統合
上記のフローを実装し、登録プロセスで作成された識別子を使用して、次を実装します。-
認可コードを要求して OAuth2.0 フローを開始します:
- ユーザーを次の URL に誘導します:
https://login.microsoftonline.com/consumers/oauth2/v2.0/authorize?client_id=[Application (client) ID from Registration]&response_type=code&redirect_uri=[RedirectUI given during registration]&scope=xboxlive.signin&xboxlive.offline_accessこの例では、サインイン トークンと、期限切れ後にアクセス トークンをリフレッシュするために使用できるオフライン トークンへのアクセスを要求しています。これにより、正しいアカウント プライバシーおよびアクティビティの通知もユーザーに表示されます。 - ユーザーが Microsoft アカウントへのログインを完了すると、認可コードが
"code="に続けて追加されたリダイレクト URI にリダイレクトされます。 xboxlive.offline_accessスコープの使用はオプションで、元のサインイン トークンが期限切れになった後の呼び出しを必要とするシナリオでのみ必要です。この要求では、他の追加スコープを使用できません。
- ユーザーを次の URL に誘導します:
-
認可コードとアプリケーション登録プロセス中に生成されたクライアント シークレットを使用して Microsoft アカウントのアクセス トークンを引き換えます:
- 次のプロパティで POST Web 要求を作成します:
URL:
https://login.microsoftonline.com/consumers/oauth2/v2.0/tokenHeader:Content-Type: application/x-www-form-urlencodedBody:
- 次のプロパティで POST Web 要求を作成します:
URL:
- サービスからの応答には、次の情報を含む JSON 応答が含まれます:
Token Type:
BearerScope:XboxLive.signin XboxLive.offline_accessExpires_in:ValueAccess_token:[token value]これはアクセス トークンであり、XBOX services と交換して XBOX ユーザー トークンを取得するために使用します。
- XBOX 認証エンドポイントを呼び出して XBOX ユーザー トークンを要求し、次の要求を完了することで、Microsoft アカウントのアクセス トークンを XBOX ユーザー トークンと交換できます:
- 次のプロパティで POST Web 要求を作成します:
URL:
https://user.auth.xboxlive.com/user/authenticateHeader:x-xbl-contract-version: 1Header:content-type: application/jsonBody: 次のデータを含む適切な形式の JSON ペイロード:
- 次のプロパティで POST Web 要求を作成します:
URL:
- サービスからの応答には、XBOX ユーザー トークンを含む次の情報を含む JSON ペイロードが含まれます。次のステップで XBOX ユーザー トークンが必要になります:
- その後、ユーザー トークンを X トークンと交換できます。ユーザーに代わってサービス間呼び出しを実行したい場合、および DelegationToken クレームやユーザーの XUID が必要な場合は、独自の証明書利用者に対する X トークンを要求し、通常どおりそのトークンを処理して必要なクレームを抽出できます。
