为了账号安全,请及时绑定邮箱和手机立即绑定

ASP.NET Core 身份的 IdentityServer4 基于角色的授权 = 访问被拒绝

ASP.NET Core 身份的 IdentityServer4 基于角色的授权 = 访问被拒绝

C#
BIG阳 2022-12-31 12:53:47
我有一个使用 IdentityServer4 作为登录服务器的 ASP.NET Core 客户端应用程序。客户端可以使用属性登录装饰控制器,[Authorize]但是如果我将属性与角色一起使用,[Authorize(Roles = "test")]我会得到拒绝访问但是,当我解析 JWT 时,我可以看到用户分配了正确的角色。{  "nbf": xxx,  "exp": xxx,  "iss": "xxx",  "aud": [    "xxx",    "xxx"  ],  "client_id": "xxx",  "sub": "xxx",  "auth_time": xxx,  "idp": "xxx",  "email": "xxx",  "role": "test", <-------------------------------  "scope": [    "openid",    "profile",    "xxx",    "xxx"  ],  "amr": [    "xxx"  ]}
查看完整描述

2 回答

?
FFIVE

TA贡献1797条经验 获得超6个赞

请确保您附加了正确的 jwt。您提供的那个看起来不错,但您可能附加了请求具有不同有效负载的 id_token。



查看完整回答
反对 回复 2022-12-31
?
哈士奇WWW

TA贡献1799条经验 获得超6个赞

即使用户角色存在于访问令牌中,它也不会被识别为角色,因为它是用户声明的一部分。例如User.IsInRole("test")返回 false。

我通过创建一个策略来使用RequireClaim然后设置Authorize属性来使用该策略来解决这个问题,例如[Authorize(Policy = "RequireUserOnly")]


查看完整回答
反对 回复 2022-12-31
  • 2 回答
  • 0 关注
  • 175 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号