gpt4 book ai didi

使用应用服务的 Azure MSI

转载 作者:行者123 更新时间:2023-12-02 02:53:07 25 4
gpt4 key购买 nike

我正在尝试使用 MSI 和 AAD 身份验证保护我的前端 Web 应用程序的支持服务。

当我从面向公众的网络应用程序调用我的支持服务时,我不断收到 401。我已将公共(public) Web 应用程序添加为支持服务的 IAM 部分中的读取器。

我不明白的是如何获取访问 token ,似乎无论我使用哪个端点来获取访问 token ,它都说找不到。

这是我的代码:

{
var azureServiceTokenProvider = new AzureServiceTokenProvider();
string accessToken = azureServiceTokenProvider.GetAccessTokenAsync("https://<mywebapi>.azurewebsites.net").GetAwaiter().GetResult();

var httpClient = new HttpClient();
httpClient.DefaultRequestHeaders.Authorization = new
AuthenticationHeaderValue("Bearer", accessToken);

RemoteIp = httpClient.GetStringAsync("https://<mywebapi>.azurewebsites.net/api/default/remoteIp").GetAwaiter().GetResult();
LocalIp = httpClient.GetStringAsync("https://<mywebapi>.azurewebsites.net/api/default/localIp").GetAwaiter().GetResult();
ConnectionId = httpClient.GetStringAsync("https://<mywebapi>.azurewebsites.net/api/default/connectionId").GetAwaiter().GetResult();
}

这是错误消息:

Parameters: Connectionstring: [No connection string specified], Resource: https://<mywebapi>.azurewebsites.net, Authority: . 
Exception Message: Tried to get token using Managed Service Identity.
Unable to connect to the Managed Service Identity (MSI) endpoint.
Please check that you are running on an Azure resource that has MSI setup.

更新: 显然是实际的端点值,但未在 stackoverflow 上公开。此外,我应该提到,在我使用个人凭据授权后,直接调用 API 端点可以正常工作 [email protected] 。该问题与 web 应用程序尝试向 webapi 识别自身身份有关,即使它是已注册的应用程序,并且已分配了对 webapi 资源的必要 IAM 权限。

最佳答案

该错误表明它尝试使用 MSI,但无法使用。您确定在启用了 MSI 的 Web 应用程序上运行此代码吗?

此外,您需要替换 "https://<mywebapi>.azurewebsites.net"与 Azure AD 中 API 的应用程序 ID URI 或应用程序 ID。换句话说,这需要与您为 API 配置的有效受众相匹配

关于使用应用服务的 Azure MSI,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51100113/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com