我正在尝试为我的网络应用程序的系统分配的托管身份获取访问令牌。这是我尝试过的代码:
DefaultAzureCredential cred = new DefaultAzureCredential(new DefaultAzureCredentialOptions()
{
ManagedIdentityClientId = Constants.ManagedIdentityId,
});
var accessToken = cred.GetToken(new TokenRequestContext(new[] { "https://management.azure.com" }));
当我尝试使用此访问令牌访问 API 管理 REST API 时,出现以下错误:
访问令牌来自错误的颁发者 'https://sts.windows.net/TENANT_ID1/'。它 必须与租客相符 'https://sts.windows.net/TENANT_ID2/' 与此订阅相关联。请使用权威机构(网址) “https://login.windows.net/TENANT_ID2”到 获取令牌。
如何/在哪里设置租户 ID?
注意: 在此阶段,我正在 Visual Studio 中的开发计算机上运行代码。
发布此问题几分钟后找到(相当简单)的解决方案。所要做的就是在创建
DefaultAzureCredential
时指定租户ID:
DefaultAzureCredential cred = new DefaultAzureCredential(new DefaultAzureCredentialOptions()
{
TenantId = Constants.TENANT_ID,
ManagedIdentityClientId = managedIdentityId,
});
对于系统分配的托管身份,无需将托管身份的对象 ID 设置为 ManagedIdentityClientId。