我已经使用.NET 5创建了两个项目: Blazor WebAssembly和Blazor Server API。我能够使用Azure AD通过单点登录成功登录这两个应用程序。这两个应用程序目前都部署在prem上。
现在,我想保护Server 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" }
);
}
}Program.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("???????");发布于 2021-07-11 19:13:37
多!Visual Studio 2019有一个内置的Blazor模板,就是这个场景!!
选择Blazor Web Assembly,然后选择在ASP核心中承载的选项
https://stackoverflow.com/questions/68335582
复制相似问题