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

跨Azure租户获取令牌方案咨询:租户B服务调用租户AAPI问题

解决方案建议

针对你跨租户部署Web服务后无法交互式获取令牌的问题,给你几个可行的实操方案:

1. 采用设备代码流(Device Code Flow)

这是专门为无浏览器环境设计的认证流程,完美适配Azure上的Web服务场景:

  • 在Web服务代码里,用MSAL调用AcquireTokenByDeviceCode方法,会生成一个设备代码和验证URL
  • 你在任意设备的浏览器打开该URL,输入设备代码完成一次交互式登录(仅需操作一次)
  • 服务端会获取到访问令牌和刷新令牌,后续可自动用刷新令牌续期,无需再手动交互
  • 该方案不需要租户B的管理员同意,仅需你拥有租户A的账户权限即可

2. 本地预获取刷新令牌,存储到Azure Key Vault

利用你本地能正常交互式登录的条件,先完成一次认证并留存凭证:

  • 本地运行代码调用AcquireTokenInteractive,获取到刷新令牌
  • 将刷新令牌存入Azure Key Vault(避免明文存储,保障安全)
  • 部署到Azure的Web服务从Key Vault读取刷新令牌,调用AcquireTokenByRefreshToken获取新的访问令牌
  • 后续刷新令牌到期前,服务端会自动用刷新令牌获取新凭证,无需再手动登录

3. 租户A注册机密客户端,使用ROPC流(限无MFA账户)

如果你的租户A账户未开启多因素认证(MFA),可以尝试这个快速方案:

  • 在租户A的Azure AD中注册一个机密客户端应用
  • 给该应用添加目标API的委派权限,并完成你个人账户的授权(无需管理员同意)
  • 在Web服务代码里,用MSAL调用AcquireTokenByUsernamePassword,传入你的租户A账户用户名、密码、客户端ID、租户ID和API范围,直接获取令牌
  • 注意:该方法不推荐用于生产环境,但个人项目或内部使用可快速解决问题

额外注意事项

  • 刷新令牌默认有效期90天,到期后需要重新触发一次认证(设备代码流或本地登录)
  • 所有敏感信息(客户端密钥、刷新令牌、用户名密码)必须存储在Azure Key Vault中,绝对不能硬编码在代码或配置文件内

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.17 09:09:52