我正在使用 keycloak,并且创建了一个 dropwizard 服务,我想开始在其中强制执行角色。
我尝试过使用 @RolesAllowd("user") 注释,但它总是返回 403。
我也尝试过@PermitAll,效果很好。
我知道我已正确连接到服务器,因为用户具有正确的信息(电子邮件、姓名等),但角色从何而来?
有没有办法查看用户拥有的角色?
(回答我自己的问题)
我遇到的问题是@RolesAllowd("user")总是返回 403,这是因为 Keycloak UI 中有一个名为“ Scope Param required”的复选框。工具提示显示:
只要在授权/令牌请求期间使用带有角色名称的范围参数,就会授予此角色。
事实证明,如果您尝试使用该角色,并且选中了该复选框,则该消息不会发送到客户端,因此客户端会认为该用户没有该角色。我选中了该复选框,这就是注释显示用户未经身份验证的原因。
因此,如果选中该复选框,您需要明确请求该角色,以下是对用户执行此操作的方法:
"scope" : {
"realm" : [ "user" ]
}
Run Code Online (Sandbox Code Playgroud)
以下是来自 Keyclaok 的更多信息:https ://issues.jboss.org/browse/KEYCLOAK-231
| 归档时间: |
|
| 查看次数: |
3298 次 |
| 最近记录: |