【发布时间】:2020-07-22 08:55:21
【问题描述】:
问题
我正在尝试利用 Blazor 中的 AuthorizeView 组件根据用户角色隐藏/显示页面的不同部分。我正在使用连接到 OKTA 的 OIDC 作为身份验证提供程序。
默认情况下,OKTA 将 Roles 范围作为 id_token 中的 Groups 声明返回。我已尝试强制身份验证提供程序查看组对角色的声明,如下面的代码所示。
我的测试帐户具有适当的权限,我可以在 Groups 声明中看到它。我无法让这个映射工作。
有没有人遇到过类似的问题和/或找到了解决方案?
示例代码
-- Program.cs --
public static async Task Main(string[] args)
{
...
builder.Services.AddOidcAuthentication(options =>
{
options.ProviderOptions.Authority = "***";
options.ProviderOptions.ClientId = "***";
options.ProviderOptions.DefaultScopes.Add("roles");
options.ProviderOptions.ResponseType = "token id_token";
options.UserOptions.RoleClaim = "groups";
options.UserOptions.NameClaim = "name";
});
....
}
-- MyPage.razor --
<AuthorizeView Roles="Admin">
<Authorized>
Authorized
</Authorized>
<NotAuthorized>
Not Authorized
</NotAuthorized>
</AuthorizeView>
【问题讨论】:
-
您是否检查过令牌以查看角色声明是否存在?如果是,它们是逗号分隔还是单独声明?
-
@Orak - 它返回一个名为 groups 的声明,其中包含角色数组,以逗号分隔。
标签: blazor asp.net-core-3.1 okta blazor-webassembly