我使用 .NET 5 创建了 2 个项目,一个 Blazor WebAssembly 和 Blazor Server API。我能够使用 Azure AD 单点登录成功地独立登录到这两个应用程序。这两个应用目前都部署在本地。
现在我想保护服务器 API,但在配置 Blazor Webassembly 以使用 httpClient 对服务器 API 进行身份验证时遇到问题。我对在 Web 程序集中设置范围的内容感到困惑,因为大多数示例使用 Graph 或 Identity Server。任何人都有一个有效的例子或可以引导我走向正确的方向?谢谢
public class ServerAuthorizationMessageHandler : AuthorizationMessageHandler
{
public ServerAuthorizationMessageHandler(IAccessTokenProvider provider, IConfiguration configuration,
NavigationManager navigationManager)
: base(provider, navigationManager)
{
var serverUrl = configuration["AppSettings:ServerUrl"];
ConfigureHandler(
authorizedUrls: new[] { serverUrl },
scopes: new[] { "api://lkjlkj/ReadAccess" }
);
}
}
程序.cs
builder.Services.AddHttpClient("Server", client => client.BaseAddress = new Uri(serverUrl))
.AddHttpMessageHandler<ServerAuthorizationMessageHandler>();
builder.Services.AddMsalAuthentication(options =>
{
builder.Configuration.Bind("AzureAd", options.ProviderOptions.Authentication);
options.ProviderOptions.DefaultAccessTokenScopes.Add("???????");
答案 0 :(得分:0)
哦! Visual Studio 2019 有一个内置的 Blazor 模板,用于这个确切的场景!!
选择 Blazor Web Assembly 并选择在 ASP .NET 核心中托管的选项