后备策略不尊重所需角色

问题描述

我对我的后备政策有点困惑。
我的目标是只允许将声明“角色”设置为“管理员”的经过身份验证的用户访问任何端点。

提示在这里没有使用 System.Security.Claims.ClaimTypes.Role 声明,而是使用自定义声明,为了简单起见,该声明将被命名为“角色”。然而,AspNet.Core 似乎会自动将名为“roles”的声明转换为 System.Security.Claims.ClaimTypes.Role

我的后备策略定义如下,Roles.Administrator 定义为 public const string Administrator = "administrator"

options.FallbackPolicy = new AuthorizationPolicyBuilder().RequireRole(Roles.Administrator)
                                                         .Build();

如果我在没有任何覆盖 [Authorize] 属性的情况下调用任何端点,则任何未经身份验证的用户都会被拒绝。到目前为止一切顺利。
但是,如果我使用任何经过身份验证的用户调用这些认受保护端点中的任何一个,即使是角色不同于 administrator 或根本没有角色的用户,请求都会成功。

我真的不知道为什么会发生这种情况,我对我用于这些测试的任何 JWT 令牌的声明进行了两次/三次检查,以确保 roles 声明确实设置为我想要的没有任何成功。

你们中有人发现我犯的错误吗?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)