首页 > 解决方案 > 如何让 Keycloak 验证用户同意?

问题描述

在我们的 NodeJS/React 应用程序中,我们使用 Keycloak 进行授权。我们需要在注册时实施同意。我们将所有这些布局调整到我们的设计系统https://github.com/keycloak/keycloak/tree/3.4.3.Final/themes/src/main/resources/theme/base/login
注册表有布局。我们将复选框添加<input type=checkbox name="user.attributes.registration_consent1" />适当的布局中。
如果用户注册并选中复选框,我可以确认相关信息存储在 Keycloak>Users>SomeUser>Edit>Attributes

属性表 但是用户仍然可以在不选中复选框的情况下注册。如果他不检查同意,如何防止用户注册?我不想使用 JavaScript。

由于糟糕的用户体验和转换速度减慢,条款和条件方法是不可接受的。

标签: validationauthenticationkeycloak

解决方案


将表单字段添加到模板后,您需要验证用户输入。验证还意味着检查用户是否填写了必填字段,并根据该字段的值覆盖/添加数据。

例如,用户检查了“条款和条件”,但您需要存储那些被接受的时间戳以及可能被接受的“条款和条件”的版本。

依赖客户端验证(HTML 或 JavaScript)并不是最好的解决方案。

在这种特殊情况下,您需要告诉 Keycloak 如何验证该新字段的值。

这可以通过使用 Keycloak 的服务提供者接口 (SPI) 来完成。在这种情况下,身份验证 SPI 负责处理注册表单数据。

这是文档中特定部分的链接: https ://www.keycloak.org/docs/latest/server_development/#modifying-extending-the-registration-form


推荐阅读