keycloak 中的 @RolesAllowed() 正在检查什么角色

nyc*_*nik 4 keycloak

我正在使用 keycloak,并且创建了一个 dropwizard 服务,我想开始在其中强制执行角色。

我尝试过使用 @RolesAllowd("user") 注释,但它总是返回 403。

我也尝试过@PermitAll,效果很好。

我知道我已正确连接到服务器,因为用户具有正确的信息(电子邮件、姓名等),但角色从何而来?

有没有办法查看用户拥有的角色?

nyc*_*nik 5

(回答我自己的问题)

我遇到的问题是@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