Keycloak - 将客户端登录限制为组成员

Posted

技术标签:

【中文标题】Keycloak - 将客户端登录限制为组成员【英文标题】:Keycloak - Restrict login to client to members of a group 【发布时间】:2019-03-14 03:38:55 【问题描述】:

我目前使用 Keycloak 作为处理登录到我的应用程序的解决方案。我使用的是 Spring,但没有使用 Keycloak 适配器,而是在我的安全配置链中使用 .oauth2Login()

我试图在 Keycloak 中实施一项策略,以确保用户是组的成员,但无济于事。我什至已经实现了一个完全由$evaluation.deny() 组成的 JS 策略,据我所知,它应该阻止所有对客户端的登录尝试。然而,这并没有做任何事情,而是 any 用户(存在于 LDAP 服务器上)能够登录。

任何帮助或指导将不胜感激。

【问题讨论】:

【参考方案1】:

如果它对Activiti project 有帮助,我们将使用 keycloak,并根据用户所属的组应用策略。我们发现使用 keycloak spring boot 适配器很容易限制基于on role 的访问,但groups 更棘手。为此,我们使用 keycloak java SDK wrote code to look up the user's groups,然后在应用程序级别过滤用户可以看到的内容 - 实际上是 based on restrictions that can be passed in at deploy time。

keycloak java sdk 只是调用 keycloak 的 REST API,所以在你的情况下,也许你可以从你的 javascript 调用 REST API 来找出用户是哪些组的成员(我猜你已经配置了 keycloak 来拉来自 LDAP)。

我不知道有什么开箱即用的方法来执行您从 keycloak 中寻找的限制,因为限制方法是针对角色而不是组的。如果您要使用role mapper,也许有可能,但我对此了解不多。

【讨论】:

以上是关于Keycloak - 将客户端登录限制为组成员的主要内容,如果未能解决你的问题,请参考以下文章

两个微服务之间的通信——keycloak客户端

Spring OAuth2 使用 Keycloak 自动登录

如何将“帐户”的概念添加到 Keycloak?

记录以便使用 KeyCloak REST API 创建浏览器会话

没有浏览器的 Keycloak OpenID 客户端

撤销 Keycloak 访问令牌