Cosmos DB 的托管身份:“本地授权已禁用。使用 AAD 令牌来授权所有请求”

问题描述 投票:0回答:1

我正在尝试禁用 Cosmos DB 的本地身份验证,并为连接到它的 Web 应用程序和功能应用程序使用托管身份。我已向这两个应用程序授予 Cosmos DB 内置贡献者角色,并验证它们是通过 az cli 分配的。但是,我收到错误:

"The MAC signature found in the HTTP request is not the same as the computed signature. Server used following string to sign - . Learn more: https:\/\/aka.ms\/cosmosdb-tsg-mac-signature","Local Authorization is disabled. Use an AAD token to authorize all requests."

这是更新后的 Cosmos 客户端:

var cosmosClient = new CosmosClient(_endpointUrl, new DefaultAzureCredential(), options);

我已按照本指南禁用本地身份验证 https://learn.microsoft.com/en-us/azure/cosmos-db/how-to-setup-rbac#disable-local-auth

azure azure-web-app-service azure-cosmosdb azure-managed-identity
1个回答
0
投票

您看到的错误表明您的 Cosmos DB 禁用了本地身份验证,并且所有请求都需要 AAD 令牌。由于您使用的是托管身份,请确保 Web 应用程序和函数应用程序在适当的范围(例如帐户、数据库或容器级别)分配了正确的“Cosmos DB 内置贡献者”角色。

确保为您的应用程序正确启用托管身份,并且 DefaultAzureCredential() 正确获取 AAD 令牌。此外,请按照本指南验证 Cosmos DB 设置中的本地身份验证是否已完全禁用。

最后,仔细检查您的 CosmosClientOptions 是否设置正确,尤其是 ConnectionMode.Gateway 或您环境的其他必要设置。

© www.soinside.com 2019 - 2024. All rights reserved.