ASP.Net核心身份AAD-B2C与自定义角色存储的组合

问题描述 投票:3回答:1

我正在开发一个ASP.Net核心Web应用程序,其中AAD-B2C作为LogIn-Provider。因此,用户必须先登录才能访问该站点 - >身份验证。

然后,我想评估用户实际可以访问的内容 - >授权

我要求使用RBAC并且角色不是在任何类型的AD中处理,而是在我们自己的数据库中处理,这也是REST API的背后。所以我使用Microsoft.AspNetCore.Identity.IUserRoleStore<MyUser>的自定义实现来从我的REST API中检索我的用户和角色,并在Startup.ConfigureServices中注册

services.AddIdentity<MyUser, MyRole>();
services.AddTransient<IUserStore<MyUser>, MyUserStore>();
services.AddTransient<IUserRoleStore<MyUser>, MyUserStore>();

但现在默认的身份验证似乎不再起作用(因为MyUser与ASP.Net默认User完全不同,例如MyUser没有User.Identity.IsAuthenticated)。当我添加像MyUserStore.IsInRoleAsync这样的Razor指令时,我也看不到网站曾经调用过User.IsInRole("Admin")

我错过了什么吗?是不是可以“拆分”ASP.Net核心身份同时处理身份验证(AAD-B2C)和授权另一种方式(自定义存储)?或者我只是以错误的方式调用它?

c# asp.net asp.net-core azure-ad-b2c asp.net-core-identity
1个回答
0
投票

如果您使用的是Azure AD B2C,则需要在Azure AD中定义自定义角色,并且我相当确定您所描述的情况不受支持。 B2C在其发送给应用程序的令牌中不包括组声明,但此处建议了一些解决方法。 Azure AD B2C - Role management

© www.soinside.com 2019 - 2024. All rights reserved.