次の方法で共有


アプリケーションから Microsoft Entra 確認済み ID の資格情報を発行する

このチュートリアルでは、お使いのローカル コンピューターから Microsoft Entra テナントに接続するサンプル アプリケーションを実行します。 このアプリケーションを使用して、検証済み資格情報エキスパート カードを発行して検証します。

この記事では、次の方法について説明します。

  • Azure で検証済み資格情報エキスパート カードを作成する。
  • 資格情報と環境の詳細を収集して、サンプル アプリケーションを設定する。
  • サンプル アプリケーション コードをローカル コンピューターにダウンロードする。
  • ご自分の検証済みの資格情報のエキスパート カードと環境の詳細を使用して、サンプル アプリケーションを更新する。
  • サンプル アプリケーションを実行し、最初の検証済み資格情報エキスパート カードを発行する。
  • 検証済み資格情報エキスパート カードを検証する。

次の図に、Microsoft Entra 確認済み ID のアーキテクチャと、構成するコンポーネントを示します。

Microsoft Entra 確認済み ID アーキテクチャを表す図。

前提条件

Azure で検証済み資格情報エキスパート カードを作成する

この手順では、Microsoft Entra 確認済み ID を使用して検証済み資格情報エキスパート カードを作成します。 資格情報を作成したら、Microsoft Entra テナントで、プロセスを開始するユーザーに対して発行できます。

  1. Microsoft Entra 管理センターグローバル管理者としてサインインします。

  2. [検証可能な資格情報] を選択します。

  3. テナントを設定すると、[資格情報の作成] が表示されます。 または、左側のメニューで [資格情報] を選択し、[+ 資格情報の追加] を選択することもできます。

  4. [資格情報の作成][カスタム資格情報] を選び、[次へ] を選びます。

    1. [資格情報名] に「VerifiedCredentialExpert」と入力します。 この名前は検証可能な資格情報を識別するためにポータル内で使用されます。 これは、検証可能な資格情報のコントラクトの一部として含まれます。

    2. 次の JSON をコピーし、表示の定義のテキスト ボックスに貼り付けます

      {
          "locale": "en-US",
          "card": {
            "title": "Verified Credential Expert",
            "issuedBy": "Microsoft",
            "backgroundColor": "#000000",
            "textColor": "#ffffff",
            "logo": {
              "uri": "https://didcustomerplayground.z13.web.core.windows.net/VerifiedCredentialExpert_icon.png",
              "description": "Verified Credential Expert Logo"
            },
            "description": "Use your verified credential to prove to anyone that you know all about verifiable credentials."
          },
          "consent": {
            "title": "Do you want to get your Verified Credential?",
            "instructions": "Sign in with your account to get your card."
          },
          "claims": [
            {
              "claim": "vc.credentialSubject.firstName",
              "label": "First name",
              "type": "String"
            },
            {
              "claim": "vc.credentialSubject.lastName",
              "label": "Last name",
              "type": "String"
            }
          ]
      }
      
    3. 次の JSON をコピーし、ルールの定義のテキスト ボックスに貼り付けます

      {
        "attestations": {
          "idTokenHints": [
            {
              "mapping": [
                {
                  "outputClaim": "firstName",
                  "required": true,
                  "inputClaim": "$.given_name",
                  "indexed": false
                },
                {
                  "outputClaim": "lastName",
                  "required": true,
                  "inputClaim": "$.family_name",
                  "indexed": true
                }
              ],
              "required": false
            }
          ]
        },
        "validityInterval": 2592000,
        "vc": {
          "type": [
            "VerifiedCredentialExpert"
          ]
        }
      }
      
    4. [作成] を選択します

次のスクリーンショットでは、新しい資格情報を作成する方法を示しています。

新しい資格情報の作成方法を示すスクリーンショット。

資格情報と環境の詳細を収集する

新しい資格情報を作成したので、お使いの環境と作成した資格情報に関する情報を収集します。 これらの情報は、サンプル アプリケーションを設定するときに使用します。

  1. [検証可能な資格情報] で、[Issue credential] (資格情報の発行) を選びます。

    新しく作成した検証済み資格情報の選択方法を示すスクリーンショット。

  2. 分散化識別子である機関をコピーして、後で使用するために記録します。

  3. マニフェスト URL をコピーします。 これは、検証可能な資格情報の発行要件がユーザーに表示される前に Authenticator によって評価される URL です。 後で使うためにこれを記録します。

  4. テナント ID をコピーして、後で使うために記録します。 テナント ID は、上の赤で強調表示されている、マニフェスト URL の guid です。

サンプル コードのダウンロード

このサンプル アプリケーションは .NET で利用でき、コードは GitHub リポジトリに保持されています。 GitHub からサンプル コードをダウンロードするか、リポジトリを自分のローカル コンピューターにクローンします。

git clone https://github.com/Azure-Samples/active-directory-verifiable-credentials-dotnet.git

検証可能な資格情報アプリを構成する

作成した登録済みアプリケーションに対してクライアント シークレットを作成します。 このサンプル アプリケーションでは、トークンを要求するときに、このクライアント シークレットを使ってその ID を証明します。

  1. Microsoft Entra 管理センターグローバル管理者としてサインインします。

  2. [Microsoft Entra ID] を選びます。

  3. [アプリケーション]>[アプリの登録] ページに移動します。

  4. 前に作成した verifiable-credentials-app アプリケーションを選択します。

  5. 名前を選び、登録の詳細に移動します。

  6. アプリケーション (クライアント) ID をコピーして、後で使用できるように保存します。

    アプリ登録 ID をコピーする方法を示すスクリーンショット。

  7. メイン メニューの [管理][証明書とシークレット] を選びます。

  8. [新しいクライアント シークレット] を選び、次の手順を実行します。

    1. [説明] にクライアント シークレットの説明を入力します (例: vc-sample-secret)。

    2. [有効期限] で、シークレットが有効な期間 (6 か月など) を選びます。 その後、 [追加] を選択します。

    3. シークレットのを記録します。 この値は、後の手順での構成に使用します。 シークレットの値は再び表示されることはなく、他の方法で取得することもできません。 表示されたらすぐに記録してください。

この時点で、サンプル アプリケーションを設定するために必要なすべての情報が表示されます。

サンプル アプリケーションを更新する

次に、サンプル アプリの発行者コードを変更して、検証可能な資格情報 URL で更新します。 この手順により、独自のテナントを使用して、検証可能な資格情報を発行できます。

  1. active-directory-verifiable-credentials-dotnet-main フォルダーで Visual Studio Code を開き、1-asp-net-core-api-idtokenhint フォルダー内のプロジェクトを選びます。

  2. プロジェクトのルート フォルダーで、appsettings.json ファイルを開きます。 このファイルには、Microsoft Entra 確認済み ID 環境に関する情報が含まれています。 前の手順で記録した情報を使用して、次のプロパティを更新します。

    1. Tenant ID: ご自分のテナント ID
    2. Client ID: ご自分のクライアント ID
    3. Client Secret: ご自分のクライアント シークレット
    4. DidAuthority: ユーザーの分散化識別子
    5. Credential Manifest: マニフェスト URL

    CredentialType はプレゼンテーションにのみ必要であるため、発行のみを行う場合は、厳密には必要ありません。

  3. appsettings.json ファイルを保存します。

次の JSON は、完全な appsettings.json ファイルを示しています。

{
  "VerifiedID": {
    "Endpoint": "https://verifiedid.did.msidentity.com/v1.0/verifiableCredentials/",
    "VCServiceScope": "3db474b9-6a0c-4840-96ac-1fceb342124f/.default",
    "Instance": "https://login.microsoftonline.com/",
    "TenantId": "aaaabbbb-0000-cccc-1111-dddd2222eeee",
    "ClientId": "00001111-aaaa-2222-bbbb-3333cccc4444",
    "ClientSecret": "123456789012345678901234567890",
    "CertificateName": "[Or instead of client secret: Enter here the name of a certificate (from the user cert store) as registered with your application]",
    "DidAuthority": "did:web:...your-decentralized-identifier...",
    "CredentialType": "VerifiedCredentialExpert",
    "CredentialManifest":  "https://verifiedid.did.msidentity.com/v1.0/00001111-aaaa-2222-bbbb-3333cccc4444/verifiableCredentials/contracts/VerifiedCredentialExpert"
  }
}

最初の検証済みの資格情報エキスパート カードを発行する

これで、サンプル アプリケーションを実行して、最初の検証済み資格情報エキスパート カードを発行する準備ができました。

  1. Visual Studio Code から、Verifiable_credentials_DotNet プロジェクトを実行します。 または、オペレーティング システムのコマンド ラインから次を実行します。

    cd active-directory-verifiable-credentials-dotnet\1-asp-net-core-api-idtokenhint
    dotnet build "AspNetCoreVerifiableCredentials.csproj" -c Debug -o .\bin\Debug\net6.
    dotnet run
    
  2. 別のコマンド プロンプト ウィンドウで次のコマンドを実行します。 このコマンドは ngrok を実行して 5000 に URL を設定し、インターネット上で一般公開します。

    ngrok http 5000
    

    注意

    一部のコンピューターでは、./ngrok http 5000 の形式でコマンドを実行する必要がある場合があります。

  3. ngrok によって生成された HTTPS URL を開きます。

    ngrok のパブリック URL を取得する方法を示すスクリーンショット。

  4. Web ブラウザーから [Get Credential](資格情報の取得) を選択します。

    サンプル アプリから資格情報の取得を選択する方法を示すスクリーンショット。

  5. お使いのモバイル デバイスを使用して、Authenticator アプリで QR コードをスキャンします。 QR コードのスキャンの詳細については、よくあるご質問のセクションを参照してください。

    QR コードをスキャンする方法を示すスクリーンショット。

  6. この時点で、このアプリまたは Web サイトが危険である可能性があることを警告するメッセージが表示されます。 [詳細] を選択します。

    警告メッセージに応答する方法を示すスクリーンショット。

  7. 危険な Web サイトの警告で、 [Proceed anyways (unsafe)](このまま続行 (安全ではありません)) を選択します。 この警告が表示されるのは、ドメインが分散識別子 (DID) にリンクされていないためです。 ドメインを検証するには、「ドメインを分散識別子 (DID) にリンクする」に従います。 このチュートリアルでは、ドメインの登録をスキップし、 [Proceed anyways (unsafe)](このまま続行 (安全ではありません)) を選択します。

    危険な警告を続行する方法を示すスクリーンショット。

  8. QR コードをスキャンした画面に表示されている PIN コードを入力するように求められます。 PIN によって、発行にさらなる保護レイヤーが追加されます。 PIN コードは、発行 QR コードが表示されるたびランダムに生成されます。

    PIN コードを入力する方法を示すスクリーンショット。

  9. PIN 番号を入力すると、[資格情報の追加] 画面が表示されます。 画面上部に、赤色で [Not verified](未検証) というメッセージが表示されます。 この警告は、前述のドメイン検証の警告に関連しています。

  10. [追加] を 選択して、新しい検証可能な資格情報を受け入れます。

    新しい資格情報の追加方法を示すスクリーンショット。

おめでとうございます。 検証済み資格情報エキスパートの検証可能な資格情報を取得できました。

新しく追加された検証可能な資格情報を示すスクリーンショット。

サンプル アプリに戻ります。 資格情報が正常に発行されたことが示されます。

検証可能な資格情報が正常に発行されたことを示すスクリーンショット。

検証可能な資格情報の名前

検証可能な資格情報には、資格情報の名と姓の値に Megan Bowen が含まれています。 これらの値は、サンプル アプリケーションでハードコーディングされ、ペイロードでの発行時に検証可能な資格情報に追加されました。

実際のシナリオでは、ユーザーの詳細はアプリケーションによって ID プロバイダーからプルされます。 次のコード スニペットは、サンプル アプリケーションで名前が設定されている場所を示しています。

//file: IssuerController.cs
[HttpGet("/api/issuer/issuance-request")]
public async Task<ActionResult> issuanceRequest()
  {
    ...
    // Here you could change the payload manifest and change the first name and last name.
    payload["claims"]["given_name"] = "Megan";
    payload["claims"]["family_name"] = "Bowen";
    ...
}

次のステップ

次のステップでは、サードパーティ アプリケーション (証明書利用者アプリケーションとも呼ばれます) が、独自の Microsoft Entra テナントの検証可能な資格情報 API サービスを使用して資格情報を検証する方法について説明します。