身份验证和授权

对 Azure AI 服务的每个请求必须包含身份验证标头。 此标头传递资源密钥或身份验证令牌,用于验证服务或服务组订阅。 在本文中,可以探索对请求进行身份验证的方法以及每个请求的要求。

标头

在 Azure AI 服务中订阅翻译或 多服务,并使用密钥(在 Azure 门户中提供)进行身份验证。

可以使用三个标头对订阅进行身份验证。 下表介绍了如何使用每个项:

标头 DESCRIPTION
Ocp-Apim-Subscription-Key 如果传递密钥 与 Azure AI 服务订阅一起使用。
该值是订阅 Translator 的 Azure 密钥。
授权 如果传递身份验证令牌,与 Azure AI 服务订阅一起使用。
值为持有者令牌:Bearer <token>
Ocp-Apim-Subscription-Region 与多服务和区域翻译资源一起使用。
该值是多服务或区域翻译资源的区域。 使用全局翻译器资源时,此值是可选的。

密钥

第一个选项是使用 Ocp-Apim-Subscription-Key 标头进行身份验证。 将 Ocp-Apim-Subscription-Key: <YOUR_SECRET_KEY> 标头添加到请求。

使用区域资源进行身份验证

使用 区域翻译资源时,需要调用翻译器两个标头。

标头 DESCRIPTION
Ocp-Apim-Subscription-Key 该值是订阅 Translator 的 Azure 密钥。
Ocp-Apim-Subscription-Region 该值是翻译器资源的区域。

下面是使用区域翻译器资源调用翻译器的示例请求

// Pass secret key and region using headers
curl -X POST "https://api.translator.azure.cn/translate?api-version=3.0&to=es" \
    -H "Ocp-Apim-Subscription-Key:<your-key>" \
    -H "Ocp-Apim-Subscription-Region:<your-region>" \
    -H "Content-Type: application/json" \
    -d "[{'Text':'Hello, what is your name?'}]"

使用多服务资源进行身份验证

多服务资源允许使用单个 API 密钥对多个服务的请求进行身份验证。

使用多服务密钥时,必须向请求包含两个身份验证标头。 有两个标头需要调用 Translator。

标头 DESCRIPTION
Ocp-Apim-Subscription-Key 该值是多服务资源的 Azure 密钥。
Ocp-Apim-Subscription-Region 该值是多服务资源的区域。

多服务文本 API 订阅需要区域。 选择的区域是使用多服务密钥时可用于文本翻译的唯一区域。 它必须是通过 Azure 门户注册多服务订阅时选择的同一区域。

如果使用参数 Subscription-Key在查询字符串中传递密钥,则必须使用查询参数 Subscription-Region指定区域。

使用访问令牌进行身份验证

或者,可以交换密钥以获取访问令牌。 此令牌作为 Authorization 标头包含在每个请求中。 若要获取授权令牌,请向以下 URL 发出 POST 请求:

资源类型 身份验证服务 URL
全球 https://api.cognitive.azure.cn/sts/v1.0/issueToken
区域或多服务 https://<your-region>.api.cognitive.azure.cn/sts/v1.0/issueToken

下面是获取给定全局资源的密钥的令牌的示例请求:

// Pass secret key using header
curl --header 'Ocp-Apim-Subscription-Key: <your-key>' --data "" 'https://api.cognitive.azure.cn/sts/v1.0/issueToken'

// Pass secret key using query string parameter
curl --data "" 'https://api.cognitive.azure.cn/sts/v1.0/issueToken?Subscription-Key=<your-key>'

下面是为位于中国北部的区域资源获取令牌的示例请求:

// Pass secret key using header
curl --header "Ocp-Apim-Subscription-Key: <your-key>" --data "" "https://chinanorth2.api.cognitive.azure.cn/sts/v1.0/issueToken"

// Pass secret key using query string parameter
curl --data "" "https://chinanorth2.api.cognitive.azure.cn/sts/v1.0/issueToken?Subscription-Key=<your-key>"

成功的请求将编码的访问令牌作为响应正文中的纯文本返回。 有效令牌作为授权中的持有者令牌传递到翻译服务。

Authorization: Bearer <Base64-access_token>

身份验证令牌有效期为 10 分钟。 对 Translator 进行多次调用时,应重复使用令牌。 但是,如果程序在较长时间内向 Translator 发出请求,则程序必须定期请求新的访问令牌(例如,每 8 分钟一次)。

使用 Microsoft Entra ID 进行身份验证

v3.0 翻译器支持Microsoft Entra 身份验证,Microsoft基于云的标识和访问管理解决方案。 授权标头使 Translator 服务能够验证请求客户端是否有权使用资源并完成请求。

先决条件

Microsoft Entra ID 标头

标题 价值
授权 该值是由 Microsoft Entra ID 生成的访问 持有者令牌
  • 持有者令牌提供身份验证证明,并验证客户端使用资源的授权。
  • 身份验证令牌有效期为 10 分钟,应在多次调用 Translator 时重复使用。
  • 请参阅示例请求:2。获取令牌
Ocp-Apim-Subscription-Region 该值是 翻译器资源的区域。
  • 如果资源是全局的,则此值是可选的。
Ocp-Apim-ResourceId 该值是翻译器资源实例的资源 ID。
  • 可以在 Azure 门户中的 Translator 资源→属性中找到资源 ID。
  • 资源 ID 格式:
    /subscriptions/<subscriptionId>/resourceGroups/<resourceGroupName>/providers/Microsoft.CognitiveServices/accounts/<resourceName>/
Translator 属性页 - Azure 门户

屏幕截图:Azure 门户中的“翻译器属性”页。

重要

认知服务用户 角色分配给服务主体。 通过分配此角色,你将向服务主体授予对 Translator 资源的访问权限。

示例

使用自定义终结点

// Using headers, pass a bearer token generated by Azure AD.

curl -X POST https://<your-custom-domain>.cognitiveservices.azure.cn/translator/text/v3.0/translate?api-version=3.0&to=es \
    -H "Authorization: Bearer <Base64-access_token>"\
    -H "Content-Type: application/json" \
    -data-raw "[{'Text':'Hello, friend.'}]"

使用托管标识 示例

v3.0 翻译器还支持授权访问托管标识。 如果为翻译器资源启用了托管标识,则可以在请求标头中传递托管标识生成的持有者令牌。

使用自定义终结点

//Using headers, pass a bearer token generated by Managed Identities.

curl -X POST https://<your-custom-domain>.cognitiveservices.azure.cn/translator/text/v3.0/translate?api-version=3.0&to=es \
    -H "Authorization: Bearer <Base64-access_token>"\
    -H "Content-Type: application/json" \
    -data-raw "[{'Text':'Hello, friend.'}]"

虚拟网络支持

若要启用虚拟网络,请参阅配置 Azure AI 服务虚拟网络

启用此功能后,必须使用自定义终结点调用 Translator。 无法使用全局翻译器终结点(“api.translator.azure.cn”),并且无法使用访问令牌进行身份验证。

创建 翻译器资源 并允许从所选网络和专用终结点进行访问后,可以找到自定义终结点。

  1. 在 Azure 门户中导航到你的翻译工具资源。

  2. 从“资源管理”部分选择“网络”。

  3. 在“防火墙和虚拟网络”选项卡上,选择“选定的网络和专用终结点”。

    Azure 门户中虚拟网络设置的屏幕截图。

  4. 选择保存以应用更改。

  5. 资源管理 部分选择 密钥和终结点

  6. 选择 虚拟网络 选项卡。

  7. 列出了文本翻译和文档翻译的终结点。

    虚拟网络终结点的屏幕截图。

标头 DESCRIPTION
Ocp-Apim-Subscription-Key 该值是订阅 Translator 的 Azure 密钥。
Ocp-Apim-Subscription-Region 该值是翻译器资源的区域。 如果资源为 ,则此值是可选的

下面是使用自定义终结点调用 Translator 的示例请求

// Pass secret key and region using headers
curl -X POST "https://<your-custom-domain>.cognitiveservices.azure.cn/translator/text/v3.0/translate?api-version=3.0&to=es" \
    -H "Ocp-Apim-Subscription-Key:<your-key>" \
    -H "Ocp-Apim-Subscription-Region:<your-region>" \
    -H "Content-Type: application/json" \
    -d "[{'Text':'Hello, what is your name?'}]"