使用 IdentityServer4 进行 Blazor WebAssembly 身份验证,Asp.Net 核心标识和不



我有一个 Blazor 服务器端应用,该应用使用不使用实体框架的 CosmosDB 的自定义标识提供程序。我想将应用转换为托管在 Asp.net Core 上的 Blazor WebAssembly

我的 Blazor 服务器端启动.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 上使用Identity Server4 Asp.Net Core Identity + SQL Server,并且需要来自 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>();

需要实体框架 DBContext 来填充 IdentityServer4 的所有参数。

我分析了四种情况:

1( 在我的自定义标识提供者之上使用实体框架,但它几乎需要完全重新编码,因为它使用深度自定义的 CosmosDB 与自定义登录/注销/注册等集成。页面

2( 在我的自定义提供程序之上使用 Identity Server4,但我是新手,整个框架很复杂,Asp.Net 核心身份的所有示例也使用实体框架,我不知道该怎么做。

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

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

我缺少什么可以帮助解决问题吗?是否有任何库可以帮助使用不使用实体框架的自定义标识提供程序配置 IdentityServer4?

经过几天的测试,我终于能够实现我想要的:

"将 Blazor Server 应用移植到 Asp.net Core 上托管的 Blazor WebAssembly,保留我的自定义 Asp.net 标识 + CosmosDB 提供程序,而不使用标识服务器 4 和实体框架。

我创建了 JWT 令牌身份验证服务 + 状态提供程序的手动实现,并将其挂接到 Asp.Net 核心标识。

我使用这个项目作为指南,其中包含一个完整的工作 JWT 实现:

https://github.com/CodeMazeBlog/blazor-series/tree/blazor-webassembly-authentication-aspnetcore-identity

相关内容

  • 没有找到相关文章

最新更新