你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

对人脸使用受限访问令牌

独立软件供应商 (ISV) 可以通过颁发访问令牌来管理其客户的人脸 API 使用情况,这些令牌可授予对通常关闭的人脸功能的访问权限。 这让他们的客户公司可以使用人脸 API,而无需经过正式的审批流程。

本指南介绍作为已获得批准的 ISV,如何生成访问令牌,以及作为客户,如何使用令牌。

有限访问令牌功能是现有的 Azure AI 服务令牌服务的一部分。 我们添加了一个新操作,用于绕过已批准方案的受限访问门。 只有满足门控要求的 ISV 才能访问此功能。

示例用例

一家示例公司销售使用 Azure AI 人脸服务来操作门禁安全系统的软件。 他们的客户(门设备的个体制造商)订阅了该软件并在其设备上运行。 这些客户公司希望从他们的设备进行人脸 API 调用,以执行人脸识别等受限访问操作。 通过依赖 ISV 的访问令牌,他们可以绕过人脸识别的正式审批流程。 已获批准的 ISV 可以向客户授予实时访问令牌。

责任预期

颁发令牌的 ISV 负责确保令牌仅用于批准的目的。

如果 ISV 得知客户将 LimitedAccessToken 用于未批准的用途,则应停止为该客户生成令牌。 Microsoft 可以跟踪 LimitedAccessTokens 的颁发和使用情况,如果未解决滥用问题,我们保留撤销 ISV 对 issueLimitedAccessToken API 的访问权限的权利。

先决条件

步骤 1:ISV 获取客户的人脸资源 ID

ISV 应该在自己的安全云服务(将生成访问令牌)以及其在客户设备上运行的应用程序之间建立一个通信通道。 在生成 LimitedAccessToken 之前,必须知道客户的人脸资源 ID。

人脸资源 ID 采用以下格式:

/subscriptions/<subscription-id>/resourceGroups/<resource-group-name>/providers/Microsoft.CognitiveServices/accounts/<face-resource-name>

例如:

/subscriptions/dc4d27d9-ea49-4921-938f-7782a774e151/resourceGroups/client-rg/providers/Microsoft.CognitiveServices/accounts/client-face-api

步骤 2:ISV 生成令牌

ISV 的云服务在安全环境中运行,使用其最终客户已知的人脸资源 ID 调用 issueLimitedAccessToken API。

若要调用 issueLimitedAccessToken API,请将以下 cURL 命令复制到文本编辑器。

curl -X POST 'https://<isv-endpoint>/sts/v1.0/issueLimitedAccessToken?expiredTime=3600' \  
-H 'Ocp-Apim-Subscription-Key: <client-face-key>' \  
-H 'Content-Type: application/json' \  
-d '{  
    "resourceId": "/subscriptions/<subscription-id>/resourceGroups/<resource-group-name>/providers/Microsoft.CognitiveServices/accounts/<face-resource-name>",  
    "featureFlags": ["Face.Identification", "Face.Verification"]  
}' 

然后,进行以下更改:

  1. <isv-endpoint> 替换为 ISV 资源的终结点。 例如 westus.api.cognitive.microsoft.com
  2. (可选)设置 expiredTime 参数以设置令牌的到期时间(以秒为单位)。 该值必须介于 60 和 86400 之间。 默认值为 3600(1 小时)。
  3. <client-face-key> 替换为客户人脸资源的密钥。
  4. <subscription-id> 替换为客户 Azure 订阅的订阅 ID。
  5. <resource-group-name> 替换为客户资源组的名称。
  6. <face-resource-name> 替换为客户人脸资源的名称。
  7. "featureFlags" 设置为要授予的访问角色集。 可用标志为 "Face.Identification""Face.Verification""LimitedAccess.HighRisk"。 ISV 只能授予 Microsoft 向其授予的权限。 例如,如果 ISV 已被授予人脸识别的访问权限,则可以为客户创建一个 LimitedAccessToken for Face.Identification。 出于使用和安全目的,记录所有令牌创建和使用。

然后,将命令粘贴到终端窗口并运行它。

API 应返回响应 200,其中包含 JSON Web 令牌形式 (application/jwt) 的令牌。 如果要检查 LimitedAccessToken,可以使用 JWT 来执行此操作。

步骤 3:客户应用程序使用令牌

然后,ISV 的应用程序可以代表客户将有限访问令牌作为 HTTP 请求头传递给未来的人脸 API 请求。 这独立于其他身份验证机制工作,因此客户的个人信息永远不会泄露给 ISV。

注意

客户不需要知道令牌值,因为它可以在后台传递。 如果客户要使用 Web 监视工具来拦截流量,则他们将能够查看 LimitedAccessToken 标头。 但是,由于令牌会在短时间后过期,因此他们可以使用的令牌用途有限。 此风险是已知的,并且被认为是可以接受的。

由每个 ISV 决定如何将令牌从云服务确切传递到客户应用程序。

使用访问令牌的示例人脸 API 请求如下所示:

curl -X POST 'https://<client-endpoint>/face/v1.0/identify' \  
-H 'Ocp-Apim-Subscription-Key: <client-face-key>' \  
-H 'LimitedAccessToken: Bearer <token>' \  
-H 'Content-Type: application/json' \  
-d '{  
  "largePersonGroupId": "sample_group",  
  "faceIds": [  
    "c5c24a82-6845-4031-9d5d-978df9175426",  
    "65d083d4-9447-47d1-af30-b626144bf0fb"  
  ],  
  "maxNumOfCandidatesReturned": 1,  
  "confidenceThreshold": 0.5  
}'

注意

终结点 URL 和人脸密钥属于客户的人脸资源,而不是 ISV 的资源。 <token> 作为 HTTP 请求标头传递。

后续步骤