调用请求服务 REST API

Microsoft Entra 验证 ID 包括请求服务 REST API。 使用此 API 可以颁发和验证凭据。 本问将介绍如何开始使用请求服务 REST API。

API 访问令牌

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

若要获取访问令牌,你的应用必须向 Microsoft 标识平台注册,并由管理员授权以访问请求服务 REST API。 若尚未注册 verifiable-credentials-app 应用程序,请依次参阅如何注册应用生成应用程序机密

获取访问令牌

使用 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}。 (使用租户 ID 或名称替换 your-tenant。)
客户端 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:

不适用。 选择其他一种编程语言。

后续步骤

详细了解以下规范: