MSAL实现用户托管标识的跨租户联合认证问题咨询
跨租户场景下使用托管标识获取Azure DevOps REST API令牌的问题
背景
我们有多套基于Azure DevOps REST APIs构建的自动化流程,此前在本地环境使用PAT认证。新执行环境迁移至Azure后,要求不得使用绑定真实用户的PAT令牌,经调研决定采用OAuth2/OIDC令牌替代PAT调用REST端点。
跨租户约束
核心复杂点在于调用工作负载所在租户T1与Azure DevOps实例所在租户T2相互独立,且因非技术原因无法迁移任何一方:
- 租户T1的工作负载环境已配置用户托管标识A
- 租户T2(托管Azure DevOps)存在用户托管标识B,且B已映射为Azure DevOps中的用户
- 托管标识B已将A配置为联合凭据
现有代码尝试
我们计划使用MSAL获取目标令牌,初步编写的C#代码如下,但关键参数尚不明确:
IManagedIdentityApplication app = ManagedIdentityApplicationBuilder.Create( ManagedIdentityId.WithUserAssignedClientId("00000000-0000-0000-0000-000000000000")) .Build(); AuthenticationToken result = await app.AcquireTokenForManagedIdentity("...") .ExecuteAsync() .ConfigureAwait(false); return result.AccessToken;
待解决疑问
我们需要获取能被Azure DevOps REST API识别为标识B的令牌,但现有官方示例未覆盖该跨租户联合场景,目前存在以下疑问:
ManagedIdentityApplicationBuilder与AcquireTokenForManagedIdentity的具体参数取值,尤其是AcquireTokenForManagedIdentity方法中的resource参数该如何设置- 是否存在其他跨平台方式可获取此类令牌
内容的提问来源于stack exchange,提问作者T2PS
相关产品推荐
相关产品推荐

