单个UMI联合身份凭据是否支持多OIDC提供商令牌?
关于用户分配托管身份联合身份凭据的多OIDC提供商问题
核心结论
你的推测完全正确:每个Microsoft.ManagedIdentity/userAssignedIdentities/federatedIdentityCredentials资源仅能对应一个OIDC颁发者。该资源的issuer属性为字符串类型,仅支持配置单个颁发者地址,无法同时容纳多个不同的OIDC提供商来源。
解决方案:创建多个联合身份凭据资源
若要让同一个用户分配托管身份(UMI)接受来自多个OIDC提供商的令牌,需为每个提供商单独创建一个federatedIdentityCredentials资源。
ARM模板示例(多凭据配置)
以下是在ARM模板中为同一UMI配置多个联合身份凭据的实现方式:
{ "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", "contentVersion": "1.0.0.0", "resources": [ // 对应OIDC提供商A的联合身份凭据 { "type": "Microsoft.ManagedIdentity/userAssignedIdentities/federatedIdentityCredentials", "apiVersion": "2023-01-31", "name": "[concat('你的UMI名称', '/credential-provider-a')]", "properties": { "audiences": ["api://AzureADTokenExchange"], "issuer": "https://provider-a.example.com", "subject": "提供商A对应的subject值" } }, // 对应OIDC提供商B的联合身份凭据 { "type": "Microsoft.ManagedIdentity/userAssignedIdentities/federatedIdentityCredentials", "apiVersion": "2023-01-31", "name": "[concat('你的UMI名称', '/credential-provider-b')]", "properties": { "audiences": ["api://AzureADTokenExchange"], "issuer": "https://provider-b.example.com", "subject": "提供商B对应的subject值" } } ] }
关键注意事项
- 每个联合身份凭据需使用唯一名称(格式为
[UMI名称]/[自定义凭据名称]),避免资源命名冲突。 - 每个凭据的
issuer和subject需严格匹配对应OIDC提供商的配置,audiences通常统一使用Azure AD默认值api://AzureADTokenExchange。
内容的提问来源于stack exchange,提问作者matthiasdenu
相关产品推荐
相关产品推荐

