我想在 keycloak 中使用 SMS OTP 创建一个用于注册和登录的表单。这个想法是,用户输入他们的手机号码,单击“发送代码”,然后就会向他们发送 OTP。如果用户未注册,他们将注册并登录。如果他们已经注册,系统只会登录他们。
您能指导我如何实施吗?
据我了解,
流程01:
<dependency>
<groupId>org.keycloak</groupId>
<artifactId>keycloak-server-spi</artifactId>
<version>${keycloak.version}</version>
</dependency>
<dependency>
<groupId>org.keycloak</groupId>
<artifactId>keycloak-server-spi-private</artifactId>
<version>${keycloak.version}</version>
</dependency>
https://wjw465150.gitbooks.io/keycloak-documentation/content/server_development/topics/auth-spi.html
在Maven项目中为keycloak定制服务提供者,生成提供给keycloak的jar
在 SPI,
i) 创建自定义 otp.ftl 文件,该文件将在注册页面后呈现。
@Override
public void authenticate(AuthenticationFlowContext context) {
Response challenge = context.form()
.createForm("otp-login.ftl");
context.challenge(challenge);
}
ii) public void action(AuthenticationFlowContext context) {} for action 执行 otp 逻辑 iii) 成功后重定向到下一页
在钥匙斗篷定制中
i) 在 Keycloak 管理控制台中,您有身份验证 -> 注册流程
ii) 自定义注册流程进行注册
iii) 登录自定义浏览器流程
用于实现自定义 spi: 在Keycloak中实现自定义SPI