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

What role is being checked by @RolesAllowed() in keycloak

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

我试过使用@RolesAllowd("user") 注释,但它总是 returns 403.

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

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

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

在 keycloak 管理控制台上的应用程序领域中,您有一个名为角色的部分。您必须在此处添加 java 安全性将检查的角色。 如果您希望用户在注册后自动获得一个角色,您需要将此角色添加到 default roles(roles -> default roles)。也可以在users-(select一个用户)->role mapping->assigned roles

手动添加角色给已经存在的用户

(回答我自己的问题)

我遇到的问题 @RolesAllowd("user") 总是 returns 403,是因为 Keycloak 中的复选框 UI 称为“需要范围参数”。工具提示显示:

This role will be granted just if scope parameter with role name is used during authorization/token request.

事实证明,如果您尝试使用该角色,并且复选框处于选中状态,则不会将其发送到客户端,因此在客户端看来用户没有该角色。为我选中了该复选框,这就是注释显示用户未通过身份验证的原因。

因此,如果该复选框被选中,您需要明确询问该角色,以下是您对用户的操作方式:

"scope" : {
  "realm" : [ "user" ]
}

这里是来自 Keyclaok 的更多信息:https://issues.jboss.org/browse/KEYCLOAK-231