サービスによる製品の権利の管理
アプリとアドオンのカタログがある場合は、 Microsoft Store コレクション API Microsoft Store 購入 API を使用して これらの製品のエンタイトルメント情報にサービスからアクセスできます。 は、Microsoft Store を通じて公開されたアプリまたはアドオンを使用する顧客の権利を表します。
これらの API は、クロスプラットフォーム サービスでサポートされるアドオン カタログを持つ開発者が使用するように設計された REST メソッドで構成されています。 これらの API を使用すると、次の操作を行うことができます。
- Microsoft Store コレクション API: ユーザーが所有する製品の Query 消費型製品をフルフィルメント済みとして に報告します。
- Microsoft Store 購入 API: 無料の製品をユーザーに提供しユーザーのサブスクリプションを してユーザーのサブスクリプションの課金状態を 変更します。
Note
Microsoft Store コレクション API と購入 API は、Azure Active Directory (Azure AD) 認証を使用して顧客の所有権情報にアクセスします。 これらの API を使用するには、ユーザー (または組織) が Azure AD ディレクトリを持っている必要があり、ディレクトリの グローバル管理者 アクセス許可が必要です。 Microsoft 365 または Microsoft の他のビジネス サービスをすでに使用している場合、Azure AD ディレクトリをすでに所有しています。
Microsoft.StoreServices ライブラリ
認証フローを効率化し、Microsoft Store Services を呼び出す場合は、Github の Microsoft.StoreServices プロジェクトとサンプルを確認します。 Microsoft.StoreServices ライブラリは、認証キーの管理に役立ち、製品を管理するための Microsoft Store Services を呼び出すラッパー API を提供します。 サンプル プロジェクトでは、サービスが Microsoft.StoreServices ライブラリをどのように使用できるか、消耗品の管理、返金された購入の調整、期限切れの資格情報の更新などのロジックの例を取り上げています。 PC または Azure を介してサンプル サービスをセットアップするための手順ごとの構成ガイドがサンプルに含まれています。
概要
次の手順では、Microsoft Store コレクション API と購入 API を使用するためのエンド ツー エンドのプロセスについて説明します。
- Azure AD でアプリケーションを構成します。
- パートナー センターで、Azure AD アプリケーション ID をアプリに関連付けます。
- 独自のサービスで、発行元の身元を表す Azure AD アクセス トークンを作成します。
- Windows クライアント アプリで、現在のユーザーの ID を表す Microsoft Store ID キーを作成し、このキーをサービスに渡します。
このエンド ツー エンド プロセスには、さまざまなタスクを実行する 2 つのソフトウェア コンポーネントが含まれます。
- サービス。 これは、ビジネス環境のコンテキストで安全に実行されるアプリケーションであり、任意の開発プラットフォームを使用して実装できます。 サービスは、シナリオに必要な Azure AD アクセス トークンを作成し、Microsoft Store コレクション API および購入 API の REST URI を呼び出す役割を担います。
- Windows クライアント アプリ。 これは、顧客権利情報 (アプリのアドオンを含む) にアクセスして管理するアプリです。 このアプリは、サービスから Microsoft Store コレクション API および購入 API を呼び出すために必要な Microsoft Store ID キーを作成する役割を担います。
手順 1: Azure AD でアプリケーションを構成する
Microsoft Store コレクション API または購入 API を使用するには、事前に Azure AD Web アプリケーションを作成し、そのアプリケーションのテナント ID とアプリケーション ID を取得して、キーを生成する必要があります。 Azure AD Web アプリケーションは、Microsoft Store コレクション API または購入 API の呼び出し元となるサービスを表します。 API を呼び出すために必要な Azure AD アクセス トークンを生成するには、テナント ID、アプリケーション ID、キーが必要です。
Web アプリまたは API アプリケーションを Azure AD にまだ登録していない場合は、Azure Active Directory とアプリケーションの統合に関する記事の指示に従って登録します。
Note
アプリケーションを登録するときに、アプリケーションの種類として Web アプリまたは API を選択して、アプリケーションのキー ("クライアント シークレット" とも呼ばれます) を取得できるようにする必要があります。 Microsoft Store コレクション API または購入 API を呼び出すには、後の手順で Azure AD にアクセス トークンを要求するときにクライアント シークレットを指定する必要があります。
Azure 管理ポータルで、Azure Active Directory に移動します。 ディレクトリを選択し、左側のナビゲーション ペインで [アプリの登録] をクリックして、アプリケーションを選択します。
アプリケーションのメイン登録ページが表示されます。 このページで、後で使用するために [アプリケーション ID] の値をコピーします。
後で必要となるキーを作成します (これは、"クライアント シークレット" と総称されます)。 左ペインで、[設定]、[キー] の順にクリックします。 このページで、キーを作成する手順を完了します。 後で使用するためにこのキーをコピーします。
手順 2: パートナー センターで Azure AD アプリケーション ID とクライアント アプリを関連付ける
Microsoft Store コレクション API または購入 API を使用してアプリまたはアドオンの所有権と購入を構成するには、パートナー センターで Azure AD アプリケーション ID をアプリ (またはアドオンを含むアプリ) に関連付けておく必要があります。
Note
この作業を行うのは一度だけです。 テナント ID、アプリケーション ID、クライアント シークレットを取得したら、新しい Azure AD アクセス トークンを作成する必要があるときに、いつでもそれらの値を再利用できます。
- パートナー センターにサインインし、アプリを選択します。
- [サービス]>[製品のコレクションと購入] ページに移動し、使用可能な [クライアント ID] フィールドのいずれかに Azure AD アプリケーション ID を入力します。
手順 3: Azure AD アクセス トークンを作成する
Microsoft Store ID キーを取得したり、Microsoft Store コレクション API または購入 API を呼び出したりする前に、発行元 ID を表す複数の異なる Azure AD アクセス トークンをサービスで作成する必要があります。 各トークンは、異なる API で使用されます。 各トークンの有効期間は 60 分であり、有効期限が切れた後に更新できます。
重要
Azure AD アクセス トークンは、アプリ内ではなく、サービスのコンテキスト内でのみ作成してください。 クライアント シークレットがアプリに送信されると、侵害される可能性があります。
さまざまなトークンと対象ユーザー URI について
Microsoft Store コレクション API または購入 API で呼び出すメソッドに応じて、2 つまたは 3 つの異なるトークンを作成する必要があります。 各アクセス トークンは、異なる対象ユーザー URI に関連付けられています。
いずれの場合も、
https://onestore.microsoft.com
対象ユーザー URI を使用してトークンを作成する必要があります。 後の手順では、このトークンを Microsoft Store コレクション API または購入 API のメソッドの Authorization ヘッダーに渡します。重要
https://onestore.microsoft.com
対象ユーザーは、サービス内に安全に格納されているアクセス トークンでのみ使用します。 サービスの外部でこの対象ユーザーとアクセス トークンを公開すると、サービスがリプレイ攻撃に対して脆弱になる可能性があります。Microsoft Store コレクション API のメソッドを呼び出して、ユーザーが所有する製品のクエリをする場合または消費型アイテムをフルフィルメント済みとしてに報告する場合は
https://onestore.microsoft.com/b2b/keys/create/collections
対象ユーザー URI を持つトークンも作成する必要があります。 後の手順では、このトークンを Windows SDK のクライアント メソッドに渡して、Microsoft Store コレクション API で使用できる Microsoft Store ID キーを要求します。Microsoft Store 購入 API のメソッドを呼び出して、無料の製品をユーザーにしたりユーザーのサブスクリプションをしたり購入したりユーザーのサブスクリプションの課金状態を変更したりする場合は
https://onestore.microsoft.com/b2b/keys/create/purchase
対象ユーザー URI を持つトークンも作成する必要があります。 後の手順では、このトークンを Windows SDK のクライアント メソッドに渡して、Microsoft Store 購入 API で使用できる Microsoft Store ID キーを要求します。
トークンを作成する
アクセス トークンを作成するには、 クライアント資格情報を使用したサービス呼び出しへのサービス呼び出し の手順に従って、サービスで OAuth 2.0 API を使用して、 https://login.microsoftonline.com/<tenant_id>/oauth2/token
エンドポイントに HTTP POST を送信します。 要求の例を次に示します。
POST https://login.microsoftonline.com/<tenant_id>/oauth2/token HTTP/1.1
Host: login.microsoftonline.com
Content-Type: application/x-www-form-urlencoded; charset=utf-8
grant_type=client_credentials
&client_id=<your_client_id>
&client_secret=<your_client_secret>
&resource=https://onestore.microsoft.com
トークンごとに、次のパラメーター データを指定します。
client_id パラメーターと client_secret パラメーターには、Azure 管理ポータルから取得した、アプリケーションのアプリケーション ID とクライアント シークレットを指定します。 Microsoft Store コレクション API または購入 API で必要な認証レベルのアクセス トークンを作成するには、これらのパラメーターの両方が必要です。
resource パラメーターには、作成するアクセス トークンの種類に応じて、previous セクションに一覧表示されている対象ユーザー URI のいずれかを指定します。
アクセス トークンの有効期限が切れた後は、この手順に従って更新できます。 アクセス トークンの構造の詳細については、「 サポートされているトークンと要求の種類を参照してください。
手順 4: Microsoft Store ID キーを作成する
Microsoft Store コレクション API または購入 API で任意のメソッドを呼び出すには、アプリで Microsoft Store ID キーを作成してサービスに送信する必要があります。 このキーは、製品所有権情報にアクセスするユーザーの ID を表す JSON Web トークン (JWT) です。 このキーの要求の詳細については、「 Microsoft Store ID キーでの要求」を参照してください。
現在、Microsoft Store ID キーを作成する唯一の方法は、アプリのクライアント コードから ユニバーサル Windows プラットフォーム (UWP) API を呼び出すことです。 生成されたキーは、デバイス上の Microsoft Store に現在サインインしているユーザーの ID を表します。
Note
各 Microsoft Store ID キーは 90 日間有効です。 キーの有効期限が切れた後、 キーを新たに。 新しいキーを作成するのではなく、Microsoft Store ID キーを更新することをお勧めします。
Microsoft Store コレクション API の Microsoft Store ID キーを作成するには
次の手順に従って、Microsoft Store コレクション API で使用できる Microsoft Store ID キーを作成し、ユーザーが所有する製品の クエリを実行したり 消耗品製品をフルフィルメント済みとして に報告したりすることができます。
サービスからクライアント アプリに
https://onestore.microsoft.com/b2b/keys/create/collections
対象ユーザー URI 値を持つ Azure AD アクセス トークンを渡します。 これは、手順 3 の前作成したトークンの 1 つです。アプリ コードで、次のいずれかのメソッドを呼び出して、Microsoft Store ID キーを取得します。
アプリで Windows.Services.Store 名前空間の StoreContext クラスを使用してアプリ内購入を管理する場合は、StoreContext.GetCustomerCollectionsIdAsync メソッドを使用します。
アプリで Windows.ApplicationModel.Store 名前空間の CurrentApp クラスを使用してアプリ内購入を管理する場合は、CurrentApp.GetCustomerCollectionsIdAsync メソッドを使用します。
Azure AD アクセス トークンをメソッドの serviceTicket パラメーターに渡します。 現在のアプリの発行元として管理するサービスのコンテキストで匿名ユーザー ID を保持する場合は、publisherUserId パラメーターにユーザー ID を渡して、現在のユーザーを新しい Microsoft Store ID キーに関連付けることもできます (ユーザー ID はキーに埋め込まれます)。 ユーザー ID を Microsoft Store ID キーに関連付ける必要がない場合は、publisherUserId パラメーターに任意の文字列値を渡すことができます。
- アプリで Microsoft Store ID キーが正常に作成されたら、キーをサービスに渡します。
Microsoft Store 購入 API の Microsoft Store ID キーを作成するには
次の手順に従って、Microsoft Store 購入 API で使用できる Microsoft Store ID キーを作成し、ユーザーに無料の製品をしたりユーザーのサブスクリプションを取得、またはユーザーのサブスクリプションの課金状態を変更したりできます。
サービスからクライアント アプリに
https://onestore.microsoft.com/b2b/keys/create/purchase
対象ユーザー URI 値を持つ Azure AD アクセス トークンを渡します。 これは、手順 3 の前作成したトークンの 1 つです。アプリ コードで、次のいずれかのメソッドを呼び出して、Microsoft Store ID キーを取得します。
アプリで Windows.Services.Store 名前空間の StoreContext クラスを使用してアプリ内購入を管理する場合は、StoreContext.GetCustomerPurchaseIdAsync メソッドを使用します。
アプリで Windows.ApplicationModel.Store 名前空間の CurrentApp クラスを使用してアプリ内購入を管理する場合は、CurrentApp.GetCustomerPurchaseIdAsync メソッドを使用します。
Azure AD アクセス トークンをメソッドの serviceTicket パラメーターに渡します。 現在のアプリの発行元として管理するサービスのコンテキストで匿名ユーザー ID を保持する場合は、publisherUserId パラメーターにユーザー ID を渡して、現在のユーザーを新しい Microsoft Store ID キーに関連付けることもできます (ユーザー ID はキーに埋め込まれます)。 ユーザー ID を Microsoft Store ID キーに関連付ける必要がない場合は、publisherUserId パラメーターに任意の文字列値を渡すことができます。
- アプリで Microsoft Store ID キーが正常に作成されたら、キーをサービスに渡します。
の図
次の図は、Microsoft Store ID キーの作成プロセスを示しています。
Microsoft Store ID キーの要求
Microsoft Store ID キーは、製品所有権情報にアクセスするユーザーの ID を表す JSON Web トークン (JWT) です。 Base64 を使用してデコードすると、Microsoft Store ID キーに次の要求が含まれます。
iat
: キーが発行された時刻を識別します。 この要求を使用して、トークンの経過時間を確認できます。 この値はエポック時間で表されます。iss
: 発行者を識別します。 これはaud
クレームと同じ値を持ちます。aud
: 対象ユーザーを識別します。https://collections.mp.microsoft.com/v6.0/keys
またはhttps://purchase.mp.microsoft.com/v6.0/keys
のいずれかの値を指定する必要があります。exp
: キーの更新以外のどの処理でもキーが受け入れられなくなる有効期限を識別します。 このクレームの値はエポック時間で表されます。nbf
: トークンの処理が受け入れられる時刻を識別します。 このクレームの値はエポック時間で表されます。http://schemas.microsoft.com/marketplace/2015/08/claims/key/clientId
: 開発者を識別するクライアント ID。http://schemas.microsoft.com/marketplace/2015/08/claims/key/payload
: Microsoft Store サービスでのみ使用する情報が含まれている不透明なペイロード (暗号化され、Base64 でエンコード)。http://schemas.microsoft.com/marketplace/2015/08/claims/key/userId
: サービスのコンテキストで現在のユーザーを識別するユーザー ID。 これは、キーの作成に使用するmethod の省略可能な publisherUserId パラメーターに渡すのと同じ値。http://schemas.microsoft.com/marketplace/2015/08/claims/key/refreshUri
: キーの更新に使用できる URI。
デコードされた Microsoft Store ID キー ヘッダーの例を次に示します。
{
"typ":"JWT",
"alg":"RS256",
"x5t":"agA_pgJ7Twx_Ex2_rEeQ2o5fZ5g"
}
デコードされた Microsoft Store ID キー要求セットの例を次に示します。
{
"http://schemas.microsoft.com/marketplace/2015/08/claims/key/clientId": "1d5773695a3b44928227393bfef1e13d",
"http://schemas.microsoft.com/marketplace/2015/08/claims/key/payload": "ZdcOq0/N2rjytCRzCHSqnfczv3f0343wfSydx7hghfu0snWzMqyoAGy5DSJ5rMSsKoQFAccs1iNlwlGrX+/eIwh/VlUhLrncyP8c18mNAzAGK+lTAd2oiMQWRRAZxPwGrJrwiq2fTq5NOVDnQS9Za6/GdRjeiQrv6c0x+WNKxSQ7LV/uH1x+IEhYVtDu53GiXIwekltwaV6EkQGphYy7tbNsW2GqxgcoLLMUVOsQjI+FYBA3MdQpalV/aFN4UrJDkMWJBnmz3vrxBNGEApLWTS4Bd3cMswXsV9m+VhOEfnv+6PrL2jq8OZFoF3FUUpY8Fet2DfFr6xjZs3CBS1095J2yyNFWKBZxAXXNjn+zkvqqiVRjjkjNajhuaNKJk4MGHfk2rZiMy/aosyaEpCyncdisHVSx/S4JwIuxTnfnlY24vS0OXy7mFiZjjB8qL03cLsBXM4utCyXSIggb90GAx0+EFlVoJD7+ZKlm1M90xO/QSMDlrzFyuqcXXDBOnt7rPynPTrOZLVF+ODI5HhWEqArkVnc5MYnrZD06YEwClmTDkHQcxCvU+XUEvTbEk69qR2sfnuXV4cJRRWseUTfYoGyuxkQ2eWAAI1BXGxYECIaAnWF0W6ThweL5ZZDdadW9Ug5U3fZd4WxiDlB/EZ3aTy8kYXTW4Uo0adTkCmdLibw=",
"http://schemas.microsoft.com/marketplace/2015/08/claims/key/userId": "infusQMLaYCrgtC0d/SZWoPB4FqLEwHXgZFuMJ6TuTY=",
"http://schemas.microsoft.com/marketplace/2015/08/claims/key/refreshUri": "https://collections.mp.microsoft.com/v6.0/b2b/keys/renew",
"iat": 1442395542,
"iss": "https://collections.mp.microsoft.com/v6.0/keys",
"aud": "https://collections.mp.microsoft.com/v6.0/keys",
"exp": 1450171541,
"nbf": 1442391941
}