我正在开发一个以AAD-B2C作为登录提供程序的ASP.Net Core Web应用程序。因此,用户必须先登录才能访问站点-> 身份验证。
然后,我要评估用户实际上被允许访问的内容-> 授权
我有一个要求,即必须使用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 Core Identity以一种方式处理身份验证(AAD-B2C)和另一种方式进行授权(自定义商店)?还是我打错电话了?
答案 0 :(得分:0)
如果使用的是Azure AD B2C,则需要在Azure AD中定义自定义角色,并且我相当确定不支持您所描述的情况。 B2C在发送到应用程序的令牌中不包含组声明,但是在此建议一些解决方法。 Azure AD B2C - Role management