從應用程式發出 Microsoft Entra 驗證識別碼 認證的問題

在本教學課程中,您會從連線到 Microsoft Entra 租使用者的本機電腦執行範例應用程式。 使用應用程式時,您將會發出並驗證已驗證的認證專家卡。

在本文中,您將學會如何:

  • 在 Azure 中建立已驗證的認證專家卡。
  • 收集認證和環境詳細數據,以設定範例應用程式。
  • 將範例應用程式程式代碼下載到本機計算機。
  • 使用已驗證認證專家卡和環境詳細數據更新範例應用程式。
  • 執行範例應用程式,併發出您的第一張已驗證認證專家卡。
  • 確認已驗證的認證專家卡片。

下圖說明您設定的 Microsoft Entra 驗證識別碼 架構和元件。

Diagram that illustrates the Microsoft Entra Verified ID architecture.

必要條件

在 Azure 中建立已驗證的認證專家卡片

提示

本文中的步驟可能會根據您從開始的入口網站稍有不同。

在此步驟中,您會使用 Microsoft Entra 驗證識別碼 建立已驗證的認證專家卡片。 建立認證之後,您的 Microsoft Entra 租使用者可以將認證發行給起始程式的使用者。

  1. 以至少全域 管理員 istrator 身分登入 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.blob.core.windows.net/public/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. 選取 建立

下列螢幕快照示範如何建立新的認證:

Screenshot that shows how to create a new credential.

收集認證和環境詳細數據

現在您有了新的認證,接下來您將收集一些有關您環境的資訊和您所建立的認證。 設定範例應用程式時,您會使用這些資訊片段。

  1. 在 [可驗證的認證] 中,選取 [ 發出認證]。

    Screenshot that shows how to select the newly created verified credential.

  2. 複製授權單位,這是分散式標識碼,並記錄它以供稍後使用。

  3. 複製指令清單 URL。 這是 Authenticator 在向用戶可驗證認證發行需求顯示之前評估的 URL。 記錄它以供稍後使用。

  4. 複製您的 租用戶標識碼,並記錄以供稍後使用。 租用戶標識碼是上方以紅色反白顯示之指令清單 URL 中的 GUID。

下載範例程式碼

範例應用程式可在 .NET 中使用,而且程序代碼會保留在 GitHub 存放庫中。 從 GitHub 下載範例程式代碼,或將存放庫複製到本機電腦:

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

設定可驗證的認證應用程式

為您所建立的已註冊應用程式建立客戶端密碼。 範例應用程式會在要求令牌時,使用用戶端密碼來證明其身分識別。

  1. 以至少全域 管理員 istrator 身分登入 Microsoft Entra 系統管理中心

  2. 選取 [Microsoft Entra ID]。

  3. 移至 [應用程式> 應用程式註冊] 頁面。

  4. 選取您稍早建立的 verifiable-credentials-app 應用程式。

  5. 選取要進入註冊詳細數據的名稱。

  6. 複製應用程式 (用戶端) 識別碼,並儲存以供稍後使用。

    Screenshot that shows how to copy the app registration ID.

  7. 從主功能表的 [管理] 底下,選取 [憑證與秘密]。

  8. 選取[ 新增客戶端密碼],然後執行下列動作:

    1. [描述] 中,輸入客戶端密碼的描述(例如 vc-sample-secret)。

    2. 在 [到期日] 底下,選取秘密有效的持續時間(例如,六個月)。 然後選取 [新增]。

    3. 記錄祕密的 [值]。 您將在稍後的步驟中使用此值進行設定。 密碼的值不會再次顯示,而且無法透過任何其他方式擷取。 一旦可見,就會將其記錄下來。

此時,您應該具備設定範例應用程式所需的所有必要資訊。

更新範例應用程式

現在,您將修改範例應用程式的簽發者程序代碼,以使用可驗證的認證URL來更新它。 此步驟可讓您使用自己的租用戶發出可驗證的認證。

  1. active-directory-verifiable-credentials-dotnet-main 資料夾下,開啟 Visual Studio Code,然後選取 1-asp-net-core-api-idtokenhint 資料夾內的專案。

  2. 在專案根資料夾下,開啟 appsettings.json 檔案。 此檔案包含您 Microsoft Entra 驗證識別碼 環境的相關信息。 使用您在先前步驟中記錄的資訊來更新下列屬性:

    1. 租用戶標識碼: 您的租用戶標識碼
    2. 用戶端識別碼: 您的用戶端識別碼
    3. 用戶端密碼:您的客戶端密碼
    4. DidAuthority:您的分散式標識碼
    5. 認證指令清單:您的指令清單 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": "12345678-0000-0000-0000-000000000000",
    "ClientId": "33333333-0000-0000-0000-000000000000",
    "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/12345678-0000-0000-0000-000000000000/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。

    Screenshot that shows how to get the ngrok public URL.

  4. 從網頁瀏覽器,選取 [ 取得認證]。

    Screenshot that shows how to choose to get the credential from the sample app.

  5. 使用您的行動裝置,使用 Authenticator 應用程式掃描 QR 代碼。 您也可以直接從相機掃描 QR 代碼,這會為您開啟 Authenticator 應用程式。

    Screenshot that shows how to scan the QR code.

  6. 此時,您會看到一則訊息警告,指出此應用程式或網站可能會有風險。 選取進階

    Screenshot that shows how to respond to the warning message.

  7. 在有風險的網站警告中,選取 [無論如何繼續][不安全]。 您會看到此警告,因為您的網域未連結至您的分散式標識碼 (DID)。 若要驗證您的網域,請遵循 將您的網域連結至分散式標識碼 (DID)。 在本教學課程中,您可以略過網域註冊,然後選取 [ 仍要繼續] (unsafe)。

    Screenshot that shows how to proceed with the risky warning.

  8. 系統會提示您輸入在掃描 QR 代碼的畫面中顯示的 PIN 碼。 PIN 會將額外的保護層新增至發行。 每次顯示發行 QR 代碼時,都會隨機產生 PIN 碼。

    Screenshot that shows how to type the pin code.

  9. 輸入 PIN 號碼之後, [新增認證 ] 畫面隨即出現。 在畫面頂端,您會看到 未驗證 的訊息(紅色)。 此警告與先前所述的網域驗證警告有關。

  10. 選取 [ 新增 ] 以接受新的可驗證認證。

    Screenshot that shows how to add your new credential.

恭喜! 您現在已有已驗證的認證專家可驗證認證。

Screenshot that shows a newly added verifiable credential.

返回範例應用程式。 它會顯示已成功發出認證。

Screenshot that shows a successfully issued verifiable credential.

可驗證的認證名稱

您的可驗證認證包含 認證中名字和姓氏值的 Megan Bowen 。 這些值是在範例應用程式中硬式編碼,並在裝載中發行時新增至可驗證的認證。

在實際案例中,您的應用程式會從識別提供者提取使用者詳細數據。 下列代碼段顯示範例應用程式中設定名稱的位置。

//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 服務來驗證您的認證。