> ## Documentation Index
> Fetch the complete documentation index at: https://devdocs.xbox.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Microsoft Store API を使用してサービスを認証する

> 委任認証 X-トークンまたはユーザー Store ID を取得して使用し、Microsoft Store サービスで認証する方法について説明します。

この記事では、委任 X-トークンまたはユーザー Store ID のいずれかを使用して、Microsoft Store API へのサービス間呼び出しを認証する方法について説明します。

* [ユーザー Store ID および Microsoft Entra ID](#authenticating-with-microsoft-entra-id-and-user-store-ids): 認証と結果を Microsoft Store アプリにサインインしているユーザー アカウントに紐付けます。
* [委任認証 X-トークン](#authenticating-with-delegated-authentication-x-tokens): 認証と結果を、現在ゲームをプレイしているユーザーの XBOX services アカウントに紐付けます。

新しい XBOX および PC のタイトルには、ユーザー Store ID 認証を使用してください。X-トークンはアクティブなプレーヤー アカウントにスコープされており、一部のサービス (Recurrence や Purchase など) ではサポートされていません。PC では、購入アカウントとプレイ アカウントが異なる場合があります。詳細については、[PC 上での Store アカウントが一致しないシナリオの処理](/publishing/xstore-commerce/xstore-mismatched-accounts)を参照してください。

クロスプラットフォームや長時間実行するサービス フローでは、アクティブなクライアントとの対話なしに更新できるため、ユーザー Store ID を使用してください。比較すると、X-トークン フローでは、最大有効期間の後にリフレッシュされたクライアント接続が必要になります。

以降のセクションでは、各認証タイプに必要な構成とリソースについてまとめます。

## Microsoft Entra ID とユーザー Store ID を使用した認証

すべての Microsoft Store サービス API は、Microsoft Entra ID とユーザー Store ID による認証をサポートしています。この認証を使用するには、あなた (または組織) が Microsoft Entra ID テナントを持ち、その下にアプリケーション ID を登録する必要があります。アプリケーションを登録するには、アカウントにテナント配下の全体管理者ロールが必要です。Microsoft Office 365 やその他の Microsoft のビジネス サービスを既に使用している場合は、Azure ポータルで管理できる Microsoft Entra ID テナントを既にお持ちです。

この認証タイプに必要なユーザー Store ID を取得するためのガイダンスについては、[サービス間認証用のユーザー Store ID を要求する](/publishing/xstore-commerce/xstore-requesting-userstoreid)を参照してください。

<Note>
  PC では、エンタイトルメントは現在タイトルをプレイしているユーザーではなく、Microsoft Store アプリにサインインしたユーザーに関連付けられます。アカウントが異なる場合があるため、PC タイトルでは [PC 上での Store アカウントが一致しないシナリオの処理](/publishing/xstore-commerce/xstore-mismatched-accounts)の情報を確認することをお勧めします。
</Note>

Microsoft Entra 認証フローで Microsoft Store API を呼び出すときは、要求の `Authorization` ヘッダーで Microsoft Entra アクセス トークンを次のように使用します。

```bash theme={null}
Authorization: Bearer <Entra ID access token>  
```

サンドボックスで作業している場合は、次のクレームを JSON リクエスト本文に含めます。これを含めないと、結果は既定で RETAIL になります。

例:

```json theme={null}
  "sbx": "XDKS.1"
```

<Info>
  **開発者管理の消費型に関する制限事項:** ユーザー Store ID および Entra ID 認証は、サンドボックス環境のほとんどの Microsoft Store API 呼び出しで機能しますが、[Consume API](/reference/microsoft-store-apis/xstore-v8-consume) は開発サンドボックスにおいて開発者管理の消費型に対するこの認証方式をサポートしていません。サンドボックスで開発者管理の消費型を消費するには、代わりに[委任認証 XSTS トークン](#authenticating-with-delegated-authentication-x-tokens)を使用してください。
</Info>

また、クライアントからのユーザー Store ID を含め、以下の表に示す受益者の値を含める必要があります。

| パラメーター                 | 型        | 説明                                                                                                                                                        | 必須 |
| ---------------------- | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------------- | -- |
| `identityType`         | `string` | 文字列値 `b2b` を指定します。                                                                                                                                        | はい |
| `identityValue`        | `string` | 消費型製品を履行済みとして報告する対象のユーザーの ID を表す[ユーザー Store ID キー](/publishing/xstore-commerce/xstore-requesting-userstoreid#step-4-create-a-user-store-id-key)。          | はい |
| `localTicketReference` | `string` | 返される応答に対して要求される識別子。ユーザー Store ID キー内の *userId* [クレーム](/publishing/xstore-commerce/xstore-requesting-userstoreid#claims-in-a-user-store-id-key)と同じ値を使用します。 | はい |

例:

```json theme={null}
  "beneficiaries": [
    {
        "identitytype" : "b2b",
        "identityValue" : "eyJ0eXAiOiJ...",
        "localTicketReference" : "testReference"
    }
  ],
```

ユーザー Store ID 認証の取得、管理、および使用方法の詳細については、以下のリソースを参照してください。

* [Microsoft.StoreServices (GitHub)](https://github.com/microsoft/Microsoft-Store-Services): バックエンドから Microsoft Store サービスを認証および呼び出すためのライブラリとソース。
* [Microsoft.StoreServices Sample (GitHub)](https://github.com/microsoft/Microsoft-Store-Services-Sample): 認証、コマース統合、および返金の照合パターンを示すサービス サンプル。
* [サービス間認証用のユーザー Store ID を要求する](/publishing/xstore-commerce/xstore-requesting-userstoreid)
* [ユーザー Store ID キーを更新する](/publishing/xstore-commerce/xstore-renew-userstoreid)
* [サービスから製品エンタイトルメントを管理する](https://learn.microsoft.com/windows/uwp/monetize/view-and-grant-products-from-a-service)

### Microsoft Store API を呼び出す図

次の図は、サービスからユーザー Store ID を使用して Microsoft Store API を呼び出すプロセスを示しています。

<img src="https://mintcdn.com/microsoft-4404708b/iADzli99B7EWodAv/images/xstore/b2b-2.png?fit=max&auto=format&n=iADzli99B7EWodAv&q=85&s=2d3f87bf7ab2c6e0b0c58085b1560506" alt="ユーザー Store ID を使用して Microsoft Store API を呼び出すプロセスを示す図。ゲーム サービスは Microsoft Entra ID とトークンを交換し、Store コレクションまたは製品 API を呼び出します。" width="826" height="431" data-path="images/xstore/b2b-2.png" />

### ユーザー Store ID と Microsoft Entra ID 認証を使用して製品を表示および管理するために必要な追加構成

Microsoft Entra ID とユーザー Store ID を使用するには、Microsoft Entra アプリケーションのクライアント ID をパートナー センターのゲームの **\[製品コレクションおよび購入]** 設定に追加します。コレクションおよび購入サービスを通じて製品とそのアドオンにアクセスするために、最大 2 つのクライアント ID を構成できます。製品が Microsoft Entra アプリケーションのクライアント ID に正しくリンクされていない場合の最も一般的な症状は、コレクションへの呼び出しは成功するが、結果に項目がないというものです。

#### Microsoft Entra ID とユーザー Store ID を使用してサービスから製品を表示できるように構成する

1. ゲームのパートナー センター ページから、左側のパネルで **\[製品コレクションおよび購入]** を選択します。
2. サービスの認証に使用する Microsoft Entra アプリケーションのクライアント ID を入力します。
3. **\[保存]** ボタンを選択します。
4. ゲーム製品とその配下のすべてのアドオンを、サンドボックスまたは開発者環境で Microsoft Store に再公開します。

公開プロセスが完了すると、サービス呼び出しから適切な項目が返されるようになります。

## 委任認証 X-トークンを使用した認証

サービス間呼び出しを認証するには、次の形式で要求に `Authorization` ヘッダーを追加して、委任認証 X-トークンを使用します。

```JSON theme={null}
Authorization: XBL3.0 x=<user hash>;<X-token>
```

X-トークンの対象証明書利用者は [https://licensing.xboxlive.com](https://licensing.xboxlive.com) である必要があり、これはレガシー XBOX Inventory サービスと同じです。以前のサービスを XBOX Inventory を呼び出すように設定していた場合、このエンドポイントで同じトークンを再利用できます。また、指定したエンドポイントの署名ポリシーに一致する署名ヘッダーも必要です。

委任認証 X-トークンおよび署名の取得、管理、および使用方法の詳細については、以下のリソースを参照してください。

* [Game Service Sample](https://aka.ms/gdkdl): クライアントからの X-トークンの検証と処理、サーバー間認証、コマース サービスなどを示す包括的な Web サービス サンプル。最新バージョンは [GDK ダウンロード サイト](https://aka.ms/gdkdl) からダウンロードしてください。All Samples の最新リリースをダウンロードします。Game Service Samples は、ダウンロードされた .zip ファイル内の samples\Live\GameService にあります。
* [Xfest 2019 - XSTS Auth and Server to Server made Easy](https://forums.xboxlive.com/articles/96129/xfest-online-2019-archive.html): X-トークンの概要と説明、および Game Service Sample がどのようにサービス間認証の取り組みを始めるのに役立つかを説明します。プレゼンテーション情報をダウンロードするには、アーカイブ サイトで **\[GDK Track Downloads]** を選択します。
* **XBOX services 認証およびサービス間呼び出し**: 認証、X-トークン、および XBOX services へのサービス間呼び出しを行うために必要な手順と呼び出しに関する、より詳細なドキュメント。

### 委任認証 X-トークンを使用して製品を表示および管理するために必要な追加構成

X-トークンはパートナー センター内のビジネス パートナー ID に紐付けられているため、製品を同じビジネス パートナー ID にリンクする必要があります。実際には、Dev Studio ID が証明書利用者で使用されているビジネス パートナー ID と一致する製品グループの下に製品を配置する必要があります。

製品が正しいビジネス パートナー ID に正しくリンクされていない場合の最も一般的な症状は、コレクションへの呼び出しは成功するが、結果に項目が返されないというものです。詳細については、フォーラムの投稿 [B2B call to Collections LicensePreview service returns empty results (Partner Center configured game)](https://forums.xboxlive.com/questions/78683/b2b-call-to-collections-licensepreview-service-ret.html) を参照してください。

#### パートナー センターで製品と Web サービスを構成するには

1. Web サービスの **\[Generate Certificate]** リンクを使用して、ビジネス パートナー証明書を作成します。(**\[Developer Settings]** > **\[XBOX Live]** > **\[Web Services]** を選択します。) 証明書利用者に紐付けられている Web サービスの行のリンクを選択します。
2. ビジネス パートナー管理 UI に移動 (**\[Developer Settings]** > **\[XBOX Live]** > **\[Business Partner]** を選択) し、手順 1 で使用した Web サービスと一致するビジネス パートナー ID をコピーします。(ビジネス パートナー ID の例: 12345678-9012-3456-7890-123456789012)
3. 製品の **\[パートナー センターの概要]** ページから、**\[新規作成]** を選択し、**\[製品グループ]** を選択します。
4. この製品グループを Dev Studio に割り当てるか、まだ Dev Studio を持っていない場合は **\[新しい Dev Studio を作成]** を選択します。
5. 選択した Dev Studio の ID が手順 2 のビジネス パートナー ID と一致していることを確認します。**\[Dev Studio ID (省略可能)]** が空の場合、ビジネス パートナー ID をコピーします。このフィールドに既に使用中の値がある場合、既存のサービス間の製品マッピングを壊さないように、上書きせずに新しい Dev Studio を作成してください。
6. Dev Studio がビジネス パートナーの一致する ID で構成されたら、作成した製品グループに戻ります。**\[この製品グループに含まれる]** リストに、ゲームとすべての製品を追加します。
7. **\[保存]** を選択して、製品グループの作成を終了します。
8. ゲームの XBOX 設定 UI に移動し、リンクされているビジネス パートナーが手順 2 で使用したものと同じであることを確認します。
9. 製品グループ内のすべての項目を、サンドボックスまたは開発者環境で Microsoft Store に再公開します。

公開プロセスが完了すると、サービス呼び出しから適切な項目が返されるようになります。

## 関連項目

[Microsoft Store Service API](/reference/microsoft-store-apis/index)

[サービス間認証用のユーザー Store ID を要求する](/publishing/xstore-commerce/xstore-requesting-userstoreid)

[ユーザー Store ID キーを更新する](/publishing/xstore-commerce/xstore-renew-userstoreid)


## Related topics

- [ライセンス トークンを使用してサービスでライセンスを検証する](/ja-jp/publishing/xstore-commerce/xstore-license-tokens.md)
- [collections.mp.microsoft.com/v8.0/collections/consume](/ja-jp/reference/microsoft-store-apis/xstore-v8-consume.md)
- [purchase.mp.microsoft.com/v8.0/b2b/orders/query](/ja-jp/reference/microsoft-store-apis/xstore-v8-clawbackv1.md)
- [サービス間認証用のユーザー Store ID を要求する](/ja-jp/publishing/xstore-commerce/xstore-requesting-userstoreid.md)
- [Microsoft Store v8 Collections b2bLicensePreview API](/ja-jp/reference/microsoft-store-apis/xstore-v8-query-for-products.md)
