次の方法で共有


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

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

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

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

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

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

前提条件

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

ヒント

この記事の手順は、開始するポータルに応じて若干異なる場合があります。

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

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

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

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

  4. [資格情報の作成][Custom Credential] (カスタム資格情報) を選び、[次へ] をクリックします。

    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 コードのスキャンの詳細については、「FAQ」を参照してください。

    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 サービスを使用して資格情報を検証する方法について説明します。