Keycloak 添加新的身份验证器

时间:2021-06-02 06:36:06

标签: java spring-boot keycloak

我想在 keycloak 中添加一个新的身份验证方法。准确地说 - 我希望 keycloak 向外部 API 询问一些特定的值。我已经阅读了 keycloak 中的流程,但它们似乎没有很好的记录,而且我觉得它不是很直观。

在登录期间,我希望 keycloak 向外部 API 发送请求,并且当且仅当返回特定值时允许用户登录。例如,我可以覆盖一些登录方法并添加几行代码来执行我想要的操作。

哪个类中的哪个方法负责登录?

1 个答案:

答案 0 :(得分:3)

要实现这一目标,您需要做很多事情。我会检查它们:

  1. 实现 Authenticator 和 AuthenticatorFactory 接口。
  2. 复制现有的身份验证流程
  3. 绑定流程
<块引用>

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

1.实现 Authenticator 和 AuthenticatorFactory 接口。

具体的接口是:

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

示例实现:

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

如果您想外部化您的配置(因此您可以为外部 api 添加用户名/密码等),请覆盖 getConfigProperties() 中的 AuthenticatorFactory 方法

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

  1. 使用管理员凭据登录 keycloak。
  2. 创建一个新领域(如果有,也可以使用)
  3. 转到左侧的“身份验证”选项卡。
  4. 复制浏览器登录流程 copy flow
  5. 添加您的流程/执行(您的 Authenticator/Factory 实现将列在 executions 下) 您可以向上或向下移动它们。使它们成为必需或替代等。 add execution
  6. 如果您覆盖配置列表,它将显示在您的执行旁边 enter image description here enter image description here

3.绑定流程。

在“身份验证”页面的第二个选项卡中绑定您的流程。 enter image description here