你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

从应用程序颁发 Microsoft Entra 验证 ID 凭据

注意

Azure Active Directory 可验证凭据现已是 Microsoft Entra 验证的 ID,并且属于 Microsoft Entra 系列产品。 详细了解标识解决方案 Microsoft Entra 系列,并开始使用统一 Microsoft Entra 管理中心

在本教程中,你将从连接到 Azure Active Directory (Azure AD) 租户的本地计算机运行示例应用程序。 使用该应用程序,你将颁发已验证凭据专家卡并对其进行验证。

在本文中,学习如何:

  • 在 Azure 中创建已验证凭据专家卡。
  • 收集凭据和环境详细信息来设置示例应用程序。
  • 将示例应用程序代码下载到本地计算机。
  • 使用已验证凭据专家卡和环境详细信息更新示例应用程序。
  • 运行示例应用程序并颁发第一张已验证凭据专家卡。
  • 验证已验证凭据专家卡。

下图展示了 Microsoft Entra 验证 ID 体系结构以及所配置的组件。

说明 Azure AD 可验证凭据体系结构的图示。

先决条件

在 Azure 中创建已验证凭据专家卡

在此步骤中,你将使用 Microsoft Entra 验证 ID 创建已验证凭据专家卡。 创建凭据后,你的 Azure AD 租户可以向启动该过程的用户颁发此凭据。

  1. 使用 Azure 门户,搜索“验证 ID”并选择它。

  2. 设置租户后,应会显示“创建凭据”。 或者,可以在左侧菜单中选择“凭据”,然后选择“+ 添加凭据”。

  3. 在“创建凭据”中,选择“自定义凭据”,然后单击“下一步”:

    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": false
                }
              ],
              "required": false
            }
          ]
        },
        "validityInterval": 2592000,
        "vc": {
          "type": [
            "VerifiedCredentialExpert"
          ]
        }
      }
      
    4. 选择“创建” 。

以下屏幕截图演示了如何创建新凭据:

此屏幕截图显示了如何创建新的数据磁盘。

收集凭据和环境详细信息

获得新凭据后,你将收集有关环境和已创建凭据的一些信息。 设置示例应用程序时,会用到这些信息。

  1. 在“可验证凭据”中,选择“颁发凭据”。

    显示如何选择新创建的已验证凭据的屏幕截图。

  2. 复制即分散式标识符“authority”,记录下来供稍后使用。

  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

配置可验证凭据应用

为你创建的已注册应用程序创建客户端密码。 该示例应用程序请求令牌时使用客户端密码来证明其身份。

  1. 转到 Azure Active Directory 中的“应用注册”页 。

  2. 选择此前创建的“verifiable-credentials-app”应用程序。

  3. 选择可用于查看注册详细信息的名称。

  4. 复制“应用程序(客户端) ID”并保存它供以后使用。

    显示如何复制应用注册 ID 的屏幕截图。

  5. 在主菜单中的“管理”下,选择“证书和机密”。

  6. 选择“新建客户端密码”,然后执行以下操作:

    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. 租户 ID:你的租户 ID
    2. Client ID:客户端 ID
    3. 客户端密码:你的客户端 ID
    4. IssuerAuthority:你的去中心化标识符
    5. VerifierAuthority:你的去中心化标识符
    6. 凭据清单:清单 URL
  3. 保存 appsettings.json 文件。

下面的 JSON 演示了一个完整的 appsettings.json 文件:

{
  "AppSettings": {
    "Endpoint": "https://verifiedid.did.msidentity.com/v1.0",
    "VCServiceScope": "3db474b9-6a0c-4840-96ac-1fceb342124f/.default",
    "Instance": "https://login.microsoftonline.com/{0}",
    "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]",
    "IssuerAuthority": "did:web:example.com...",
    "VerifierAuthority": "did:web:example.com...",
    "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\\netcoreapp3.
    dotnet run
    
  2. 在另一个命令提示符窗口,运行以下命令。 此命令会运行 ngrok 在 5000 上设置一个 URL,并使其在 Internet 上公开可用。

    ngrok http 5000
    

    注意

    在某些计算机上,可能需要以 ./ngrok http 3000 格式运行命令。

  3. 打开 ngrok 生成的 HTTPS URL。

    显示如何获取 ngrok 公共 URL 的屏幕截图。

  4. 在 Web 浏览器中,选择“获取凭据”。

    显示如何从示例应用中选择获取凭据的屏幕截图。

  5. 使用移动设备,通过 Authenticator 应用扫描 QR 码。 你还可直接从照相机扫描 QR 码,这会为你打开 Authenticator 应用。

    显示如何扫描 QR 码的屏幕截图。

  6. 此时,你会看到一条消息,警告你此应用或网站可能有风险。 选择“高级”。

    显示如何响应警告消息的屏幕截图。

  7. 在出现“网站有风险”的警告时,选择“仍然继续(不安全)”。 你会看到此警告,因为你的域未链接到你的去中心化标识符。 若要验证域,请按照将域关联到去中心化标识符 (DID)进行操作。 对于本教程,可跳过域注册,选择“仍然继续(不安全)”。

    显示如何在有风险警告的情况下继续操作的屏幕截图。

  8. 系统将提示你输入在扫描 QR 码的屏幕中显示的 PIN 码。 PIN 向颁发添加了额外的保护层。 每次显示颁发 QR 码时,都会随机生成 PIN 码。

    显示如何键入 pin 代码的屏幕截图。

  9. 输入 PIN 码后,会显示“添加凭据”屏幕。 在屏幕顶部,可以看到“未验证”消息(红色)。 此警告与之前提到的域验证警告相关。

  10. 选择“添加”以接受新的可验证凭据。

    显示如何添加新凭据的屏幕截图。

恭喜! 你现在拥有已验证凭据专家可验证凭据。

显示新添加的可验证凭据的屏幕截图。

返回到示例应用。 其中显示凭据已成功颁发。

演示成功颁发的可验证凭据的屏幕截图。

可验证凭据名称

可验证凭据包含 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";
    ...
}

后续步骤

下一步中,你将了解第三方应用程序(也称为信赖方应用)如何通过其自己的 Azure AD 租户可验证凭据 API 服务来验证你的凭据。