微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

后备策略不尊重所需角色

如何解决后备策略不尊重所需角色

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

提示在这里没有使用 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 举报,一经查实,本站将立刻删除。