Keycloak 添加新的验证器

Keycloak adding new authenticator

我想在 keycloak 中添加一个新的身份验证方法。准确地说 - 我希望 keycloak 向外部 API 询问一些特定的值。我读过 keycloak 中的流程,但它们的文档似乎很少,我觉得它不是很直观。

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

class哪个方法负责登录?

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

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

I assume you know how to write and deploy a keycloak extension.

1。实现 Authenticator 和 AuthenticatorFactory 接口。

具体的接口是那些:

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

示例实现:

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

如果你想外部化你的配置(所以你可以为外部 api 添加 username/password 等),覆盖 AuthenticatorFactory[=20= 中的 getConfigProperties() 方法]

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

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

3。绑定流量。

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