密钥罩添加新的验证码

2022-03-27 00:00:00 keycloak java spring-boot

我想在keyloak中添加一个新的auth方法。准确地说,我希望密钥罩向外部API请求一些特定值。我读过有关钥匙斗篷中的流程,但它们的记录似乎很少,而且我有一种感觉,它不是很直观。

在登录期间,我希望密钥罩向外部API发送请求,并且当且仅当返回特定值时才允许用户登录。例如,我可以覆盖一些登录方法,然后添加几行代码来做我想做的事情。

哪个类使用哪种方法负责登录?


解决方案

要实现此目标,您需要执行多项操作。我会仔细检查一下:

  1. 实现Authenticator和AuthenticatorFactory接口。
  2. 复制现有身份验证流
  3. 绑定流

我假设您知道如何编写和部署密钥罩扩展。

1.实现Authenticator和AuthenticatorFactory接口。

具体接口为:

org.keycloak.authentication.AuthenticatorFactory
org.keycloak.authentication.Authenticator

示例实现:

org.keycloak.authentication.authenticators.browser.UsernamePasswordFormFactory
org.keycloak.authentication.authenticators.browser.UsernamePasswordForm

如果要外部化配置(以便可以为外部API添加用户名/密码等),请重写AuthenticatorFactory

中的getConfigProperties()方法

2.复制现有身份验证流。

  1. 使用管理员凭据登录密钥罩。
  2. 创建新领域(如果有,请使用)
  3. 转到左侧的"身份验证"选项卡。
  4. 复制浏览器登录流程
  5. 添加您的流/执行(您的Authenticator/Factory实现将列在Executions下) 您可以向上或向下移动它们。使它们成为必需的或可供选择的等等。
  6. 如果覆盖配置列表,它将显示在您的执行旁边

3.绑定流。

在身份验证页面的第二个选项卡中绑定流。

相关文章