You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

通过托管标识从Web应用调用Azure翻译服务的方法是否正确?

使用托管标识调用Azure翻译服务的配置说明

现有步骤的问题分析

  • 步骤1(启用翻译服务托管标识):这一步完全多余。需要启用托管标识的是你的Web应用,翻译服务作为被调用的资源,不需要开启托管标识。
  • 步骤2(角色分配):角色选择不当。Contributor权限过大,不符合最小权限原则,应该给托管标识分配认知服务用户(Cognitive Services User)角色,这个角色刚好拥有调用翻译服务的必要权限。
  • 步骤3(代码集成):代码逻辑没问题,但要注意两个细节:
    • 如果用的是用户分配托管标识,实例化ManagedIdentityCredential时必须指定客户端ID:new ManagedIdentityCredential(clientId: "你的用户分配标识ID");系统分配标识则无需额外参数
    • endpoint必须是你的翻译服务专属终结点,格式类似https://<你的翻译服务名称>.cognitiveservices.azure.com/

必须补充的Web应用身份配置

你漏掉了核心步骤:为Web应用启用托管标识,操作如下:

  1. 打开Azure门户的Web应用资源页
  2. 左侧导航栏选择「标识」
  3. 系统分配标识:切换状态为「开启」并保存,系统会自动生成对应的托管标识
  4. 用户分配标识:先创建用户分配标识资源,再回到Web应用的「用户分配」标签下添加该标识

修正后的完整流程

  1. 为Web应用启用托管标识(系统分配/用户分配二选一)
  2. 在翻译服务的访问控制(IAM)中,给该托管标识分配认知服务用户角色
  3. 调整代码(按需适配托管标识类型):
// Initialize the Azure Translator client
// 系统分配标识写法
var credential = new ChainedTokenCredential(new ManagedIdentityCredential(), new AzureCliCredential());
// 用户分配标识写法
// var credential = new ChainedTokenCredential(new ManagedIdentityCredential(clientId: "你的用户分配标识客户端ID"), new AzureCliCredential());
var translatorClient = new TranslationClient(new Uri(endpoint), credential);

内容的提问来源于stack exchange,提问作者samraj

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.07 03:52:06