keycloak,用户注册。如何添加角色?

Posted

技术标签:

【中文标题】keycloak,用户注册。如何添加角色?【英文标题】:keycloak, user registration. How to add the role? 【发布时间】:2020-01-20 13:02:33 【问题描述】:

我有一个由 keycloak 保护的应用程序。转到受保护的页面会打开一个 keycloak 登录页面,正确的用户/密码会给出预期的结果。

在客户端中,我开启了用户注册。所以现在登录页面显示了一个注册链接,该链接显示另一个 keycloak 页面,允许用户使用姓名、用户名、电子邮件进行注册。

这个“有效”是因为用户被添加到 keycloak 用户数据库中。但是应用程序会显示错误页面,因为角色未在 keycloak 中映射到该用户。

我希望能够将新用户添加到应用程序自己的用户数据库中,将角色与用户相关联,也许对用户进行一些验证。

所以我真的不知道 keycloak 会发送回应用程序,除非它最终导致 /error。有没有办法在新注册联系此 url 后告诉 keycloak 在应用程序中可能发生的事情?

【问题讨论】:

【参考方案1】:

登录到 Keycloak 管理控制台后 --> 角色 -> 转到“默认角色”选项卡并将角色从可用部分添加到默认领域角色部分并保存...现在当用户注册时,它将具有分配的角色。

【讨论】:

【参考方案2】:

我遇到了类似的情况,我解决它的方法是为新添加的用户启用默认角色。 稍后可以更改此角色,但使用默认角色,您的流程将完成。

有两种方法可以在 keycloak 中分配默认角色。使用这两种配置,无论何时从外部服务提供商处注册新用户,都会为他们分配此默认角色:

    直接为用户分配默认角色:

    为用户分配默认组并将角色映射到该默认组

请注意,上面的 Default GroupRole 名称是我自己的,它们没有在 keycloak 中预定义。

【讨论】:

是的,我考虑过这个,这是个好主意。但我仍然想要一种让注册后重定向到客户端应用程序中特定端点的方法。例如,我也可以将新注册的内容添加到应用程序数据库中。或者我可以将该用户引导到一个新的用户页面,该页面可能会验证电子邮件地址,并且在这种情况发生之前不允许访问。可能的一种方法是拥有一个特殊的新用户角色?但即便如此,将注册后重定向到已知端点也会很有用。 @John - 现在正在解决类似的问题。我们有三层角色。基本上,我们希望单个超级用户(角色 1)能够生成注册链接以发送给他的下属(角色 2)。我认为正在传递的链接将包含 url 参数,这些参数将为该用户点击该注册 URL 自动填充正确的角色/组。 keycloak 是否允许这种 API 行为? @Andy 是吗?我现在很挣扎。

以上是关于keycloak,用户注册。如何添加角色?的主要内容,如果未能解决你的问题,请参考以下文章

使用 keycloak 在 servlet 应用程序中获取用户角色

Keycloak-向用户配置文件中添加角色

使用 Keycloak Admin Java API 向用户添加角色

是否可以在 keycloak 中为不同组中的用户添加不同的角色?

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

如何激活keycloak的REST API?