禁用Azure翻译器本地身份验证并迁移至TokenCredential的问题咨询
解决Azure翻译器禁用本地身份验证后使用TokenCredential的401问题
核心配置要点
- 必须给使用的身份(服务主体/托管标识/本地登录账户)分配认知服务翻译器用户角色
去Azure翻译器资源的IAM页面,添加角色分配,选择对应的身份,分配正确的角色。注意IAM角色分配可能需要5-10分钟才会生效,别刚分配就测试。 - 客户端初始化时必须指定正确的资源区域
翻译器资源的区域要和代码里指定的完全一致,比如资源在eastus,代码里就不能写eastus2。
正确的客户端初始化代码示例
C#
using Azure.AI.Translation.Text; using Azure.Identity; var credential = new DefaultAzureCredential(); // 替换为你的翻译器资源所在区域 var resourceRegion = "eastus"; var client = new TextTranslationClient(credential, resourceRegion);
Python
from azure.ai.translation.text import TextTranslationClient from azure.identity import DefaultAzureCredential credential = DefaultAzureCredential() resource_region = "eastus" client = TextTranslationClient(credential=credential, region=resource_region)
关于旧验证方式失效的说明
禁用本地身份验证后,所有基于资源密钥的验证都会失效,包括之前调用https://api.cognitive.microsoft.com/sts/v1.0/issueToken获取令牌的方式,必须完全切换到Azure AD TokenCredential的验证模式,依赖Azure AD颁发的权限令牌访问翻译器服务。
401错误的常见排查点
- 检查身份是否有正确的IAM角色:确认角色分配的对象是你当前使用的身份(本地测试用的az login账户、应用服务的托管标识等)
- 区域是否完全匹配:去Azure门户看翻译器资源的概述页面,复制精确的区域名称
- 本地测试时的身份上下文:确保
az login登录的账户有翻译器资源的访问权限,或者环境变量配置了正确的服务主体信息
内容的提问来源于stack exchange,提问作者magom001
相关产品推荐
相关产品推荐

