Cod*_*Lee 6 c# asp.net-core-identity blazor
我试图找出用户在 Blazor Server 应用程序中具有哪些角色,该应用程序为使用 MS 帐户和 Azure Active Directory 的组织设置了身份验证。我想这些角色是由管理 MS 帐户的 IT 运营团队设置的,但我没有找到在哪里验证这一点。
所以我想知道:使用 Org 身份验证时在哪里设置角色,如何更改它们,是否有一种简单的方法来查看经过身份验证的用户具有哪些角色?
我尝试使用级联参数在MS doc示例代码中查找经过身份验证的用户角色,如下所示:
@page "/"
<button @onclick="LogUsername">Log username</button>
@code {
[CascadingParameter]
private Task<AuthenticationState> authenticationStateTask { get; set; }
protected override void OnInitialized()
{
base.OnInitialized();
LogUsername();
}
private async Task LogUsername()
{
var authState = await authenticationStateTask;
var user = authState.User;
if (user.Identity.IsAuthenticated)
{
var test = user.Claims.Where(c => c.Type.Contains("Role")); // also tried "role"
string role = test.FirstOrDefault().ToString();
Console.WriteLine($"{role} is authenticated.");
}
else
{
Console.WriteLine("The user is NOT authenticated.");
}
}
}
Run Code Online (Sandbox Code Playgroud)
身份有一个,RoleClaimType但我找不到其他任何东西可以告诉给定用户的角色是什么。我可能是在错误的地方寻找这个吗?我找不到有关组织身份验证如何与 .NET core 和 Blazor 中的身份配合使用的任何详细文档,因此我们非常感谢任何提示、建议或正确方向的推动!
角色在 Azure 门户中设置。Azure Active Directory -> 应用程序注册 -> [您的应用程序] -> 角色和管理员。对于自定义角色,你的组织将需要 Azure AD Premium P1 或 P2 许可证。
至于如何检索它们,这里引用了文档:
获取角色声明。当用户登录时,应用程序会在类型为http://schemas.microsoft.com/ws/2008/06/identity/claims/role的声明中接收用户分配的角色 (JWT 令牌中的角色声明) )。
可以为一个用户分配多个角色,也可以不分配任何角色。在您的授权代码中,不要假设用户只有一个角色声明。相反,编写代码来检查特定声明值是否存在:
if (context.User.HasClaim(ClaimTypes.Role, "Admin")) { ... }
| 归档时间: |
|
| 查看次数: |
7478 次 |
| 最近记录: |