调用请求服务 REST API

Microsoft Entra Verified ID 包括请求服务的 REST API。 此 API 允许颁发和验证凭据。 本文介绍如何开始使用请求服务 REST API。

API 访问令牌

应用程序需要包含具有所需权限的有效访问令牌,以便它可以访问请求服务 REST API。 Microsoft 标识平台颁发的访问令牌包含的信息(权限范围)可用于请求服务 REST API 验证调用者身份。 访问令牌可确保调用方具有执行所请求的操作的适当权限。

若要获取访问令牌,你的应用必须注册到Microsoft标识平台,并由管理员授权才能访问请求服务 REST API。 如果尚未注册 可验证凭据应用 应用程序,请参阅 如何注册应用,然后 生成应用程序机密

获取访问令牌

使用 OAuth 2.0 客户端凭据授予流通过 Microsoft 标识平台获取访问令牌。 为此,请使用受信任的库。 在本教程中,我们使用Microsoft身份验证库(MSAL)。 MSAL 简化了向可调用安全 Web API 的应用添加身份验证和授权。

POST /{tenant}/oauth2/v2.0/token HTTP/1.1           //Line breaks for clarity
Host: login.microsoftonline.com
Content-Type: application/x-www-form-urlencoded

client_id=00001111-aaaa-2222-bbbb-3333cccc4444
&scope=3db474b9-6a0c-4840-96ac-1fceb342124f/.default
&client_secret=sampleCredentia1s
&grant_type=client_credentials

在前面的代码中,提供以下参数:

参数 条件 描述
权威 必选 应用程序计划对其进行操作的目录租户。 例如:https://login.microsoftonline.com/{your-tenant}。 (将 your-tenant 替换为租户 ID 或名称。)
客户 ID 必选 分配给你的应用的应用程序 ID。 可以在注册应用的 Azure 门户中找到此信息。
客户端密钥 必选 为应用生成的客户端密码。
范围 必选 必须设置为 3db474b9-6a0c-4840-96ac-1fceb342124f/.default。 此设置生成一个角色声明为 VerifiableCredential.Create.All 的访问令牌

有关如何使用控制台应用的标识获取访问令牌的详细信息,请参阅以下文章之一:

还可以使用证书来访问令牌请求,而不是客户端密码。

POST /{tenant}/oauth2/v2.0/token HTTP/1.1   //Line breaks for clarity
Host: login.microsoftonline.com
Content-Type: application/x-www-form-urlencoded

client_id=00001111-aaaa-2222-bbbb-3333cccc4444
&scope=3db474b9-6a0c-4840-96ac-1fceb342124f/.default
&client_assertion_type=urn%3Aietf%3Aparams%3Aoauth%3Aclient-assertion-type%3Ajwt-bearer
&client_assertion=eyJhbGciOiJSUzI1NiIsIng1dCI6Imd4OHRHeXN5amNScUtqRlBuZDdSRnd2d1pJMCJ9.eyJ{a lot of characters here}M8U3bSUKKJDEg
&grant_type=client_credentials

调用 API

若要颁发或验证可验证凭据,请执行以下操作:

  1. 构造对请求服务 REST API 的 HTTP POST 请求。 URL 中不再需要租户 ID,因为它以访问令牌中的声明的形式存在。

    发布

    POST https://verifiedid.did.msidentity.com/v1.0/verifiableCredentials/createIssuanceRequest
    

    验证

    POST https://verifiedid.did.msidentity.com/v1.0/verifiableCredentials/createPresentationRequest
    
  2. 将访问令牌作为持有者令牌附加到 HTTP 请求中的授权标头。

    Authorization: Bearer <token>
    
  3. Content-Type 标头设置为 Application/json

  4. 准备好将发布出示请求的有效负载附加到请求正文。

  5. 将请求提交到请求服务 REST API。

请求服务 API 在成功调用时返回 HTTP 状态代码 201 Created。 如果 API 调用返回错误,请检查 错误参考文档

发布请求示例

以下示例演示了可验证凭据颁发请求。 有关有效负载的信息,请参阅请求服务 REST API 发布规范

POST https://verifiedid.did.msidentity.com/v1.0/verifiableCredentials/createIssuanceRequest
Content-Type: application/json
Authorization: Bearer  <token>

{...JSON payload...}

使用 idTokenHint 证明流的发布请求:

{
    "authority": "did:web:verifiedid.contoso.com",
    "callback": {
        "url": "https://contoso.com/api/issuer/issuanceCallback",
        "state": "de19cb6b-36c1-45fe-9409-909a51292a9c",
        "headers": {
            "api-key": "OPTIONAL API-KEY for CALLBACK EVENTS"
        }
    },
    "registration": {
        "clientName": "Verifiable Credential Expert Sample"
    },
    "type": "VerifiedCredentialExpert",
    "manifestUrl": "https://verifiedid.did.msidentity.com/v1.0/00001111-aaaa-2222-bbbb-3333cccc4444/verifiableCredentials/contracts/VerifiedCredentialExpert1",
    "pin": {
        "value": "3539",
        "length": 4
    },
    "claims": {
        "given_name": "Megan",
        "family_name": "Bowen"
    }
}

有关完整代码,请参阅以下代码示例之一:

演示文稿请求示例

以下示例演示了可验证凭据演示请求。 有关有效负载的信息,请参阅 请求服务 REST API 表示规范

POST https://verifiedid.did.msidentity.com/v1.0/verifiableCredentials/createPresentationRequest
Content-Type: application/json
Authorization: Bearer  <token>

{...JSON payload...}

具有特定类型和颁发者的凭据的出示请求:

{
  "authority": "did:web:verifiedid.contoso.com",
  "callback": {
    "url": "https://contoso.com/api/verifier/presentationCallback",
    "state": "92d076dd-450a-4247-aa5b-d2e75a1a5d58",
    "headers": {
      "api-key": "OPTIONAL API-KEY for CALLBACK EVENTS"
    }
  },
  "registration": {
    "clientName": "Veritable Credential Expert Verifier"
  },
  "includeReceipt": true,
  "requestedCredentials": [
    {
      "type": "VerifiedCredentialExpert",
      "purpose": "So we can see that you a veritable credentials expert",
      "acceptedIssuers": [
        "did:web:verifiedid.contoso.com"
      ],
      "configuration": {
        "validation": {
          "allowRevoked": true,
          "validateLinkedDomain": true
        }
      }
    }
  ]
}

有关完整代码,请参阅以下代码示例之一:

回调事件

请求负载包含发布出示回调终结点。 终结点是 Web 应用程序的一部分,应通过 HTTPS 协议公开提供。 请求服务 API 调用你的终结点,以告知你的应用某些事件。 例如,此类事件可能是当用户扫描 QR 码、使用指向验证器应用的深层链接或完成演示过程时。

下图描述了应用对请求服务 REST API 的调用,以及应用程序的回调。

显示 API 调用及回调事件的流程图。

配置终结点以侦听传入的 HTTP POST 请求。 以下代码片段演示如何处理颁发回调 HTTP 请求以及如何相应地更新 UI:

不適用。 选择其他编程语言之一。

后续步骤

详细了解这些规范: