Blazor client/server 应用在获取数据 api 请求时出现 AAD 身份验证错误
Blazor client/server app with AAD auth errors on Fetch Data api request
我刚刚启动了一个 Blazor 应用程序。
我正在尝试让 AAD 身份验证使用它并遵循这些说明。我正在本地尝试这一切,还没有部署到任何外部服务器。我正在使用新的 aspnet 核心应用程序开箱即用的默认地址:https://localhost:5001(运行 没有 IIS Express)。
我已关注这篇 MS 文章(https://docs.microsoft.com/en-us/aspnet/core/security/blazor/webassembly/hosted-with-azure-active-directory?view=aspnetcore-3.1
), 几乎逐字逐句(当然除了我的 ID 和应用程序名称不同)。
登录部分一切正常,我可以登录。
但是,当我尝试 select Blazor 客户端应用程序左侧的获取数据 link - 我收到错误消息。当我查看 Fiddler 中的请求时,我看到以下错误。我还尝试直接转到 WeatherForecast api 端点(仍在本地主机上)并且我收到 401 响应(即使我刚刚成功登录)。
承载错误="invalid_token",error_description="The audience 'https://app.com/d8302c4f-7ef1-49ac-92a0-a9c46b875313' is invalid"
可能是什么问题?
看来观众看错了
我在客户端有这个Program.cs
builder.Services.AddMsalAuthentication(options =>
{
builder.Configuration.Bind("AzureAd", options.ProviderOptions.Authentication);
options.ProviderOptions.DefaultAccessTokenScopes.Add("https://app.com/d8302c4f-7ef1-49ac-92a0-a9c46b875313/App.Writers");
});
App.Writers 是客户端应用程序注册的范围。我也尝试过将范围放在服务器端应用程序注册中,但这似乎也不起作用。
谢谢
我设法解决了这个问题。
请特别注意本文档中的客户端应用设置,即此处:https://docs.microsoft.com/en-us/aspnet/core/security/blazor/webassembly/hosted-with-azure-active-directory?view=aspnetcore-3.1#client-app-configuration
本节:
如此处所说,确保您使用 api 客户端 ID 作为 DefaultAccessTokenScopes。
所以在我们的案例中,我从:
'https://app.com/d8302c4f-7ef1-49ac-92a0-a9c46b875313/App.Writers'
至
'd8302c4f-7ef1-49ac-92a0-a9c46b875313/App.Writers'
我刚刚启动了一个 Blazor 应用程序。
我正在尝试让 AAD 身份验证使用它并遵循这些说明。我正在本地尝试这一切,还没有部署到任何外部服务器。我正在使用新的 aspnet 核心应用程序开箱即用的默认地址:https://localhost:5001(运行 没有 IIS Express)。
我已关注这篇 MS 文章(https://docs.microsoft.com/en-us/aspnet/core/security/blazor/webassembly/hosted-with-azure-active-directory?view=aspnetcore-3.1 ), 几乎逐字逐句(当然除了我的 ID 和应用程序名称不同)。
登录部分一切正常,我可以登录。
但是,当我尝试 select Blazor 客户端应用程序左侧的获取数据 link - 我收到错误消息。当我查看 Fiddler 中的请求时,我看到以下错误。我还尝试直接转到 WeatherForecast api 端点(仍在本地主机上)并且我收到 401 响应(即使我刚刚成功登录)。
承载错误="invalid_token",error_description="The audience 'https://app.com/d8302c4f-7ef1-49ac-92a0-a9c46b875313' is invalid"
可能是什么问题?
看来观众看错了
我在客户端有这个Program.cs
builder.Services.AddMsalAuthentication(options =>
{
builder.Configuration.Bind("AzureAd", options.ProviderOptions.Authentication);
options.ProviderOptions.DefaultAccessTokenScopes.Add("https://app.com/d8302c4f-7ef1-49ac-92a0-a9c46b875313/App.Writers");
});
App.Writers 是客户端应用程序注册的范围。我也尝试过将范围放在服务器端应用程序注册中,但这似乎也不起作用。
谢谢
我设法解决了这个问题。
请特别注意本文档中的客户端应用设置,即此处:https://docs.microsoft.com/en-us/aspnet/core/security/blazor/webassembly/hosted-with-azure-active-directory?view=aspnetcore-3.1#client-app-configuration
本节:
如此处所说,确保您使用 api 客户端 ID 作为 DefaultAccessTokenScopes。
所以在我们的案例中,我从:
'https://app.com/d8302c4f-7ef1-49ac-92a0-a9c46b875313/App.Writers'
至
'd8302c4f-7ef1-49ac-92a0-a9c46b875313/App.Writers'