gpt4 book ai didi

c# - 在 Blazor 中结合使用 ASP.Net Core Identity 和 Azure 身份验证

转载 作者:行者123 更新时间:2023-12-04 17:20:38 25 4
gpt4 key购买 nike

我有一个服务器端 Blazor 应用程序,已成功与 Azure 集成以进行身份​​验证。标准方法在这里起作用,我修改了 Startup.cs,如下所示:

services.AddAuthentication(OpenIdConnectDefaults.AuthenticationScheme)
.AddMicrosoftIdentityWebApp(Configuration.GetSection("AzureAd"));
services.AddControllersWithViews()
.AddMicrosoftIdentityUI();
services.AddAuthorization(options => {
// By default, all incoming requests will be authorized
// according to the default policy
options.FallbackPolicy = options.DefaultPolicy;
});

然后我在 MainLayout.razor 中检查身份验证,如下所示:

    protected override async Task OnInitializedAsync()
{
AuthenticationState authState = await AuthenticationStateProvider.GetAuthenticationStateAsync();
System.Security.Claims.ClaimsPrincipal user = authState.User;
System.Security.Principal.IIdentity userIdent = user.Identity;
if (userIdent.IsAuthenticated)
{
doMoreStuff(user);
}
...
}

我还想通过具有自定义 UserStore 和 RoleStore 实现的身份启用授权(不使用 Entity Framework 核心)。我开始实现用户存储和角色存储,并将它们添加到Startup.cs中:

IdentityBuilder builder = services.AddIdentity<MyUser, MyRole>()
.AddDefaultTokenProviders();
builder.Services.AddScoped(typeof(IUserStore<>).MakeGenericType(builder.UserType), typeof(MyUserManager));
builder.Services.AddScoped(typeof(IRoleStore<>).MakeGenericType(builder.RoleType), typeof(MyRoleManager));

但是,一旦我添加这些自定义身份添加项,我就会立即看到 MainLayout 中调用 AuthorizationStateProvider.GetAuthenticationStateAsync() 的代码现在返回 null。

关于如何实现自定义身份和 Azure 身份验证有什么建议吗?他们不想为我一起打好比赛。

最佳答案

回答了我自己的问题,实际上我发现了一些很好的建议here .

该方法似乎只是获取 Azure 返回的 ClaimsPrincipal,然后从应用程序内添加您自己的附加声明。

关于c# - 在 Blazor 中结合使用 ASP.Net Core Identity 和 Azure 身份验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66376925/

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