通过出示现有可验证凭据的声明来颁发可验证凭据

注意

Microsoft Entra 验证 ID 现在是 Microsoft Entra 验证 ID 和 Microsoft Entra 产品系列的一部分。 详细了解标识解决方案 Microsoft Entra 系列,并开始使用统一 Microsoft Entra 管理中心

使用呈现证明类型的规则定义会生成一个颁发流,在此颁发流中,你希望用户在颁发期间出示钱包中的另一个可验证凭据,用于发布新凭据的声明值取自所出示的凭据。 例如,当你出示 VerifiedEmployee 凭据以获取访问者通行凭据时,可以执行此操作。

创建具有呈现证明类型的自定义凭据

在 Azure 门户中选择“添加凭据”时,可以选择启动两个快速入门。 选择“自定义凭据”,然后选择“下一步”。

Screenshot of the 'Issue credentials' quickstart for creating a custom credential.

在“创建新凭据”页上,输入显示和规则定义的 JSON 代码。 在“凭据名称”框中,为凭据提供名称。 此名称只是门户中凭据的内部名称。 凭据的类型名称在规则定义的 vc.type 属性名称中定义。 要创建凭据,选择“创建”。

Screenshot of the 'Create a new credential' page, displaying JSON samples for the display and rules files.

示例 JSON 显示定义

无论证明类型如何,JSON 显示定义都几乎相同。 只需根据可验证凭据所拥有的声明来调整标签。 显示定义的预期 JSON 是显示集合的内部内容。 JSON 是一个集合,如果要支持多个区域设置,则添加多个条目,以逗号作为分隔符。

{
  "locale": "en-US",
  "card": {
    "backgroundColor": "#000000",
    "description": "Use your verified credential to prove to anyone that you know all about verifiable credentials.",
    "issuedBy": "Microsoft",
    "textColor": "#ffffff",
    "title": "Verified Credential Expert",
    "logo": {
      "description": "Verified Credential Expert Logo",
      "uri": "https://didcustomerplayground.blob.core.windows.net/public/VerifiedCredentialExpert_icon.png"
    }
  },
  "consent": {
    "instructions": "Present your True Identity card to issue your VC",
    "title": "Do you want to get your Verified Credential?"
  },
  "claims": [
    {
      "claim": "vc.credentialSubject.firstName",
      "label": "First name",
      "type": "String"
    },
    {
      "claim": "vc.credentialSubject.lastName",
      "label": "Last name",
      "type": "String"
    }
  ]
}

示例 JSON 规则定义

JSON 证明定义应包含呈现名称。 映射部分的 inputClaim 定义了应在用户出示的凭据中捕获哪些声明。 它们需要有前缀 $.vc.credentialSubject。 outputClaim 定义了在颁发的凭据中的声明名称。

以下规则定义将要求用户在颁发过程中出示 True Identity 凭据。 此凭据来自公共演示应用程序

{
  "attestations": {
    "presentations": [
      {
        "mapping": [
          {
            "outputClaim": "firstName",
            "required": true,
            "inputClaim": "$.vc.credentialSubject.firstName",
            "indexed": false
          },
          {
            "outputClaim": "lastName",
            "required": true,
            "inputClaim": "$.vc.credentialSubject.lastName",
            "indexed": false
          }
        ],
        "required": false,
        "credentialType": "TrueIdentity",
        "contracts": [
          "https://verifiedid.did.msidentity.com/v1.0/tenants/3c32ed40-8a10-465b-8ba4-0b1e86882668/verifiableCredentials/contracts/M2MzMmVkNDAtOGExMC00NjViLThiYTQtMGIxZTg2ODgyNjY4dHJ1ZSBpZGVudGl0eSBwcm9k/manifest"
        ]
      }
    ]
  },
  "validityInterval": 2592001,
  "vc": {
    "type": [
      "VerifiedCredentialExpert"
    ]
  }
}
属性 类型 说明
credentialType 字符串 在颁发期间要求的凭据类型。 上述示例中的 TrueIdentity
contracts 字符串(数组) 所要求凭据的清单 URL 列表。 在上面的示例中,清单 URL 是 True Identity 的清单
trustedIssuers 字符串(数组) 所要求凭据的允许颁发者 DID 列表。 在上面的示例中,DID 是 True Identity 颁发者的 DID。

颁发期间的 Authenticator 体验

在颁发期间,Authenticator 会提示用户选择匹配的凭据。 如果用户的钱包中有多个匹配的凭据,则必须选择要出示的凭据。

Screenshot of presentations claims input.

配置示例用于颁发自定义凭据

要配置示例代码用于颁发和验证自定义凭据,需要:

  • 租户的颁发者分散式标识符 (DID)
  • 凭据类型
  • 指向凭据的清单 URL

查找自定义凭据的此信息的最简单方法是转到 Azure 门户中的凭据。 选择“颁发凭据”。 然后便可以访问具有请求服务 API JSON 有效负载的文本框。 将占位符值替换为环境的信息。 颁发者的 DID 是 authority 值。

Screenshot of the quickstart custom credential issue.

后续步骤

查看规则和显示定义参考