自定义可验证凭据

可验证凭据定义由两个组件构成,即显示定义和规则定义。 显示定义控制凭据的品牌打造以及声明的样式。 规则定义确定用户在接收可验证凭据之前需要提供的内容。

本文介绍如何修改这两种类型的定义以满足组织的要求。

显示定义:钱包凭据视觉对象

Microsoft Entra 验证 ID 提供一组有限的选项,这些选项可用来反映你的品牌。 本文提供有关如何自定义凭据的说明,以及有关设计凭据的最佳做法,这些凭据在颁发给用户后看起来很不错。

Microsoft Authenticator 是一个分散式身份识别钱包,显示以卡片的形式向用户颁发的可验证凭据。 作为 VC 管理员,可以选择与组织品牌相符的卡片颜色、图标和文本字符串。

Authenticator 中经过验证的凭据卡片的屏幕截图,其中标注了关键元素。

卡片还包含可自定义的字段。 你可以使用这些字段让用户知道卡片的用途、其中包含的属性,等等。

创建凭据显示定义

显示定义是一个简单的 JSON 文档,描述钱包应用应如何显示可验证凭据的内容。

注意

目前,此显示模型仅由 Microsoft Authenticator 使用。

显示定义具有以下结构。 徽标 URI(如果指定为 URL)必须是 Internet 中公开可用的 URL。

{
    "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"
      }
    ]
}

有关属性的详细信息,请参阅 displayModel 类型

规则定义:用户的需求

规则定义是一个简单的 JSON 文档,用于描述可验证凭据的重要属性。 具体而言,它描述如何使用声明来填充可验证凭据和凭据类型。

{
  "attestations": {
      ...
  },
  "validityInterval":  2592000,
  "vc": {
    "type": [
      "VerifiedCredentialExpert"
    ]
  }
}

证明

目前可在规则定义中配置以下四种证明类型。 可通过不同方式提供 Microsoft Entra 验证 ID 颁发服务使用的声明,这些声明将插入到可验证凭据中,并使用你的分散式标识符 (DID) 证明该信息。 可以在规则定义中使用多个证明类型。

  • ID 令牌:如果配置了此选项,你需要提供 OpenID Connect 配置 URI,并包含应包含在可验证凭据中的声明。 系统会提示用户在 Authenticator 应用上“登录”以满足此要求,并从他们的帐户添加关联的声明。 若要配置此选项,请参阅本操作指南

  • ID 令牌提示:示例应用和教程使用 ID 令牌提示。 配置此选项后,信赖方应用将需要在请求服务 API 颁发请求中提供应包含在可验证凭据中的声明。 信赖方应用从何处获取声明取决于应用,但声明可以来自当前登录会话、后端 CRM 系统,甚至来自自断言用户输入。 若要配置此选项,请参阅本操作指南

  • 可验证凭据:颁发流程的最终结果是生成可验证凭据,但你也可以要求用户呈交可验证凭据,以便颁发凭据。 规则定义可以从呈交的可验证凭据获取特定的声明,并将这些声明包括在组织中新颁发的可验证凭据中。 若要配置此选项,请参阅本操作指南

  • 自证声明:选择此选项时,用户能够直接将类型信息输入到 Authenticator 中。 目前,字符串是唯一受支持的自证声明输入。 若要配置此选项,请参阅本操作指南

有关规则 JSON 模型的详细信息,请参阅 rulesModel 类型

凭据类型

所有的可验证凭据都必须在其规则定义中声明其“类型”。 凭据类型可将可验证凭据架构与其他凭据区分开,并确保颁发者与验证者之间的互操作性。 若要指示凭据类型,请提供该凭据所满足的一种或多种凭据类型。 每种类型由唯一的字符串表示。 通常,URI 用于确保全局唯一性。 URI 不必可寻址。 将它视为字符串。 例如,康托索大学所颁发的文凭凭据可能会声明以下类型:

类型 用途
https://schema.org/EducationalCredential 声明 Contoso 大学所颁发的文凭中包含由 schema.org EducationaCredential 对象定义的属性。
https://schemas.ed.gov/universityDiploma2020 声明 Contoso 大学所颁发的文凭中包含由美国教育部定义的属性。
https://schemas.contoso.edu/diploma2020 声明康托索大学所颁发的文凭中包含由康托索大学定义的属性。

通过声明三种类型的文凭,Contoso 可以颁发符合验证者的不同请求的凭据。 银行可以请求用户提供一组 EducationCredential,文凭可用来满足该请求。 或者,Contoso 大学校友会可以请求提供 https://schemas.contoso.edu/diploma2020 类型的凭据,而文凭也可以满足该请求。

为确保凭据的互操作性,建议你与相关组织密切合作,以定义要在你所处的行业中使用的凭据类型、架构和 URI。 许多行业主体都会提供有关官方文档结构的指导,这些文档可改变用途,用来定义可验证凭据的内容。 你还应当与凭据验证者密切合作,了解其如何请求和使用你的可验证凭据。

后续步骤

现在,你对可验证凭据的设计以及如何创建自己的凭据有了更好的了解,请参阅: