通过


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

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

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

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

创建自定义凭据的“颁发凭据”快速入门的屏幕截图。

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

“创建新凭据”页的屏幕截图,其中显示了用于显示和规则文件的 JSON 示例。

示例 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.z13.web.core.windows.net/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.credentialSubjectoutputClaim 定义了在颁发的凭据中的声明名称。

以下规则定义将提示用户在颁发过程中出示 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/aaaabbbb-0000-cccc-1111-dddd2222eeee/verifiableCredentials/contracts/M2MzMmVkNDAtOGExMC00NjViLThiYTQtMGIxZTg2ODgyNjY4dHJ1ZSBpZGVudGl0eSBwcm9k/manifest"
        ]
      }
    ]
  },
  "validityInterval": 2592001,
  "vc": {
    "type": [
      "VerifiedCredentialExpert"
    ]
  }
}
财产 类型 说明
credentialType 字符串 在颁发期间要求的凭据类型。 之前示例中的 TrueIdentity
contracts 字符串(数组) 所要求凭据的清单 URL 列表。 在前面的示例中,清单 URL 是 True Identity 的清单
trustedIssuers 字符串(数组) 所请求凭据的允许颁发者的分散式标识符 (DID) 列表。 在前面的示例中,DID 是 True Identity 证书颁发者的 DID。

颁发期间的 Authenticator 体验

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

呈现声明输入的屏幕截图。

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

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

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

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

快速入门自定义凭据颁发的屏幕截图。

后续步骤

请参阅规则和显示定义参考