@colesAllowed()在keycloak中检查了什么角色

时间:2016-03-07 22:13:27

标签: keycloak

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

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

我也试过@PermitAll,这很好。

我知道我已正确连接到服务器,因为用户中有正确的信息(电子邮件,姓名等),但角色来自哪里?

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

2 个答案:

答案 0 :(得分:2)

(回答我自己的问题)

我遇到的问题 @RolesAllowd("用户")总是返回403,因为Keycloak用户界面中的复选框名为" 需要范围参数"。并且工具提示显示:

  

只有在授权/令牌请求期间使用带有角色名称的scope参数时,才会授予此角色。

事实证明,如果您尝试使用该角色,并且复选框已打开,则不会将其发送到客户端,因此客户端似乎认为该用户没有该角色。该复选框为我点击了,这就是注释显示用户未经过身份验证的原因。

因此,如果选中该复选框,则需要明确询问角色,以下是您如何对用户执行此操作:

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

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

答案 1 :(得分:1)

在keycloak管理控制台的应用领域中,您有一个名为roles的部分。在那里,您必须添加将由Java安全性检查的角色。 如果您希望注册后的用户自动收到角色,则需要将此角色添加到默认角色(角色 - >默认角色)中。您还可以手动将角色添加到用户中的现有用户 - (选择用户) - >角色映射 - >分配角色