gpt4 book ai didi

asp.net-identity - Blazor WebAssembly 身份验证与 IdentityServer4、Asp.Net Core Identity 和没有 Entity Framework 的自定义提供程序

转载 作者:行者123 更新时间:2023-12-04 13:36:03 26 4
gpt4 key购买 nike

我有一个 Blazor 服务器端应用程序,它使用不使用 Entity Framework 的 CosmosDB 的自定义身份提供程序。我想将应用程序转换为 Blazor WebAssembly 托管在 Asp.net Core 上 .

我的 Blazor 服务器端 Startup.cs 自定义提供程序如下所示:

 services.AddTransient<IRoleStore<ApplicationRole>, CosmosDBRoleStore<ApplicationRole>>();
services.AddTransient<IUserStore<ApplicationUser>, CosmosDBUserStore<ApplicationUser>>();
services.AddIdentity<ApplicationUser, ApplicationRole>().AddDefaultTokenProviders();
services.AddAuthentication();
services.AddAuthorization();

Visual Studio for Blazor WebAssembly 中的当前模板 托管在 Asp.net Core 在 Asp.Net Core Identity + SQL Server 之上使用 Identity Server4,它需要来自 Entity Framework Core 的 DBContext。
 services.AddDbContext<ApplicationDbContext>(options =>
options.UseSqlServer(
Configuration.GetConnectionString("DefaultConnection")));

services.AddDefaultIdentity<ApplicationUser>(options =>
options.SignIn.RequireConfirmedAccount = true)
.AddEntityFrameworkStores<ApplicationDbContext>();

services.AddIdentityServer().AddApiAuthorization<ApplicationUser, ApplicationDbContext>();
services.AddAuthentication().AddIdentityServerJwt();

我安装了自定义 Cosmos DB 身份提供程序,但该行
 services.AddIdentityServer().AddApiAuthorization<ApplicationUser, ApplicationDbContext>();

需要 Entity Framework DBContext 来填充 IdentityServer4 的所有参数。

我分析了四种情况:

1) 在我的自定义身份提供程序之上使用 Entity Framework ,但它几乎需要完全重新编码,因为它使用深度定制的 CosmosDB 集成与自定义登录/注销/注册等.. 页面

2)在我的自定义提供程序之上使用 Identity Server4,但我是新手,整个框架很复杂,所有带有 Asp.Net Core Identity 的示例也使用 Entity Framework ,我不知道该怎么做它。

3) 删除我的自定义身份提供程序并使用 Azure B2C。经过一些测试,我发现它很杂乱且难以自定义,带有弹出窗口和无品牌的确认电子邮件。这也会使自定义配置文件编辑页面上数周的工作无效。

4) 将项目保留在 Blazor 服务器端,不要迁移

有什么我遗漏的可以帮助解决问题吗?任何可以帮助使用不使用 Entity Framework 的自定义身份提供程序配置 IdentityServer4 的库?

最佳答案

经过几天的测试,我终于能够实现我想要的:
“将 Blazor 服务器应用程序移植到托管在 Asp.net Core 上的 Blazor WebAssembly,保留我的自定义 Asp.net Identity + CosmosDB 提供程序,而无需使用 Identity Server 4 和 Entity Framework 。”
我创建了 JWT token 身份验证服务 + 状态提供程序的手动实现,并将其连接到 Asp.Net Core Identity。
我使用这个项目作为指南,其中包含一个完整的 JWT 实现:
https://github.com/CodeMazeBlog/blazor-series/tree/blazor-webassembly-authentication-aspnetcore-identity

关于asp.net-identity - Blazor WebAssembly 身份验证与 IdentityServer4、Asp.Net Core Identity 和没有 Entity Framework 的自定义提供程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62051608/

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