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'