次の方法で共有


要求サービス REST API を呼び出す

Microsoft Entra Verified ID には、要求サービス REST API が含まれています。 この API を使用すると、資格情報を発行して確認できます。 この記事では、要求サービス REST API の使用を開始する方法について説明します。

API アクセス トークン

要求サービス REST API にアクセスできるように、アプリケーションに必要なアクセス許可を持つ有効なアクセス トークンを含める必要があります。 Microsoft ID プラットフォームによって発行されたアクセス トークンには、要求サービス REST API が呼び出し元を検証するために使用する情報 (スコープ) が含まれています。 アクセス トークンは、呼び出し元が要求している操作を実行するための適切なアクセス許可を持っていることを保証します。

アクセス トークンを取得するには、アプリを Microsoft ID プラットフォームに登録し、要求サービス REST API へのアクセスを管理者が承認する必要があります。 "検証可能な資格情報アプリ" のアプリケーションを登録していない場合は、アプリを登録する方法を参照し、アプリケーション シークレットを生成します。

アクセス トークンを取得する

OAuth 2.0 クライアント資格情報付与フロー を使用して、Microsoft ID プラットフォームを使用してアクセス トークンを取得します。 この目的には、信頼できるライブラリを使用してください。 このチュートリアルでは、Microsoft Authentication Library (MSAL) を使用します。 MSAL を使用すると、セキュリティで保護された Web API を呼び出すことができるアプリに認証と承認を簡単に追加できます。

POST /{tenant}/oauth2/v2.0/token HTTP/1.1           //Line breaks for clarity
Host: login.microsoftonline.com
Content-Type: application/x-www-form-urlencoded

client_id=00001111-aaaa-2222-bbbb-3333cccc4444
&scope=3db474b9-6a0c-4840-96ac-1fceb342124f/.default
&client_secret=sampleCredentia1s
&grant_type=client_credentials

前のコードでは、次のパラメーターを指定します。

パラメーター 条件 説明
権限 必須 アプリケーションが操作を計画しているディレクトリ テナント。 例: https://login.microsoftonline.com/{your-tenant}. (your-tenantテナント ID または名前に置き換えます。
クライアント ID 必須 アプリに割り当てられているアプリケーション ID。 この情報は、アプリを登録した Azure portal で確認できます。
クライアント シークレット 必須 アプリ用に生成したクライアント シークレット。
スコープ 必須 3db474b9-6a0c-4840-96ac-1fceb342124f/.defaultに設定する必要があります。 この設定により、VerifiableCredential.Create.Allロール要求が含まれたアクセス トークンが生成されます。

コンソール アプリの ID を使用してアクセス トークンを取得する方法の詳細については、次のいずれかの記事を参照してください。

クライアント シークレットではなく、証明書を使用してトークン要求にアクセスすることもできます。

POST /{tenant}/oauth2/v2.0/token HTTP/1.1   //Line breaks for clarity
Host: login.microsoftonline.com
Content-Type: application/x-www-form-urlencoded

client_id=00001111-aaaa-2222-bbbb-3333cccc4444
&scope=3db474b9-6a0c-4840-96ac-1fceb342124f/.default
&client_assertion_type=urn%3Aietf%3Aparams%3Aoauth%3Aclient-assertion-type%3Ajwt-bearer
&client_assertion=eyJhbGciOiJSUzI1NiIsIng1dCI6Imd4OHRHeXN5amNScUtqRlBuZDdSRnd2d1pJMCJ9.eyJ{a lot of characters here}M8U3bSUKKJDEg
&grant_type=client_credentials

API を呼び出す

検証可能な資格情報を発行または確認するには:

  1. 要求サービス REST API への HTTP POST 要求を作成します。 テナント ID はアクセス トークンのクレームとして存在するため、URL に必要がなくなりました。

    発行

    POST https://verifiedid.did.msidentity.com/v1.0/verifiableCredentials/createIssuanceRequest
    

    を確認してください

    POST https://verifiedid.did.msidentity.com/v1.0/verifiableCredentials/createPresentationRequest
    
  2. アクセス トークンをベアラー トークンとして HTTP 要求の承認ヘッダーにアタッチします。

    Authorization: Bearer <token>
    
  3. Content-Type ヘッダーを Application/jsonに設定します。

  4. 発行または提示の要求ペイロードを準備して、要求本文にアタッチします。

  5. 要求サービス REST API に要求を送信します。

要求サービス API は、正常な呼び出し時に HTTP 状態コード 201 Created を返します。 API 呼び出しでエラーが返された場合は、エラーリファレンスドキュメント確認してください。

発行要求の例

次の例は、検証可能な資格情報の発行要求を示しています。 ペイロードの詳細については、サービス REST API 発行仕様を参照してください。

POST https://verifiedid.did.msidentity.com/v1.0/verifiableCredentials/createIssuanceRequest
Content-Type: application/json
Authorization: Bearer  <token>

{...JSON payload...}

idTokenHint 構成証明フローを使用した発行要求:

{
    "authority": "did:web:verifiedid.contoso.com",
    "callback": {
        "url": "https://contoso.com/api/issuer/issuanceCallback",
        "state": "de19cb6b-36c1-45fe-9409-909a51292a9c",
        "headers": {
            "api-key": "OPTIONAL API-KEY for CALLBACK EVENTS"
        }
    },
    "registration": {
        "clientName": "Verifiable Credential Expert Sample"
    },
    "type": "VerifiedCredentialExpert",
    "manifestUrl": "https://verifiedid.did.msidentity.com/v1.0/00001111-aaaa-2222-bbbb-3333cccc4444/verifiableCredentials/contracts/VerifiedCredentialExpert1",
    "pin": {
        "value": "3539",
        "length": 4
    },
    "claims": {
        "given_name": "Megan",
        "family_name": "Bowen"
    }
}

完全なコードについては、次のいずれかのコード サンプルを参照してください。

プレゼンテーション要求の例

次の例では、検証可能な資格情報のプレゼンテーション要求を示します。 ペイロードの詳細については、「要求サービス REST API の提示の仕様」を参照してください。

POST https://verifiedid.did.msidentity.com/v1.0/verifiableCredentials/createPresentationRequest
Content-Type: application/json
Authorization: Bearer  <token>

{...JSON payload...}

特定の種類と発行者を持つ資格情報のプレゼンテーション要求:

{
  "authority": "did:web:verifiedid.contoso.com",
  "callback": {
    "url": "https://contoso.com/api/verifier/presentationCallback",
    "state": "92d076dd-450a-4247-aa5b-d2e75a1a5d58",
    "headers": {
      "api-key": "OPTIONAL API-KEY for CALLBACK EVENTS"
    }
  },
  "registration": {
    "clientName": "Veritable Credential Expert Verifier"
  },
  "includeReceipt": true,
  "requestedCredentials": [
    {
      "type": "VerifiedCredentialExpert",
      "purpose": "So we can see that you a veritable credentials expert",
      "acceptedIssuers": [
        "did:web:verifiedid.contoso.com"
      ],
      "configuration": {
        "validation": {
          "allowRevoked": true,
          "validateLinkedDomain": true
        }
      }
    }
  ]
}

完全なコードについては、次のいずれかのコード サンプルを参照してください。

コールバック イベント

要求ペイロードには、発行プレゼンテーション コールバック エンドポイントが含まれています。 エンドポイントは Web アプリケーションの一部であり、HTTPS プロトコルを介して一般公開する必要があります。 要求サービス API は、エンドポイントを呼び出して、特定のイベントについてアプリに通知します。 たとえば、ユーザーが QR コードをスキャンしたり、認証アプリへのディープ リンクを使用したり、プレゼンテーション プロセスを完了したりする場合などです。

次の図は、要求サービス REST API に対してアプリが行う呼び出しと、アプリケーションへのコールバックを示しています。

API とコールバック イベントの呼び出しを示す図。

受信 HTTP POST 要求をリッスンするようにエンドポイントを構成します。 次のコード スニペットは、発行コールバック HTTP 要求を処理する方法と、それに応じて UI を更新する方法を示しています。

適用されません。 他のプログラミング言語のいずれかを選択します。

次の手順

これらの仕様の詳細については、以下を参照してください。