首页 > 解决方案 > 带票证检索的 LDAP / Kerberos 身份验证

问题描述

在保护 HPC 集群服务的上下文中,我们需要实现与 Kerberos 身份验证相关的功能。我们目前正在使用 Keycloak 来保护与集群相关的某些服务的身份验证,这非常有效。身份验证通过 Kerberos 执行,方法是使用 LDAP 用户联合并为用户名密码和 SPNEGO 启用 Kerberos。

我们需要的功能是:在成功验证后,能够保留 Kerberos 票证 (TGT),以便 keycloak 能够将其“转发”到我们在环境中可以控制的专用组件。

通过查看 Kerberos 身份验证的代码,显然没有保留成功身份验证后收到的 Kerberos 票证,例如,对于用户名/密码 Kerberos 身份验证,我们有:

(我还没有深入研究 SPNEGO 代码,但我认为它不是在收到的 TGS 中寻找可转发的 TGT)

简而言之,我们需要的功能是:

  1. 用户通过 Kerberos 通过 Keycloak 对服务进行身份验证
  2. 成功验证后,Keycloak 会保留 Kerberos TGT 并能够对其进行处理(转发它或我们需要的任何操作)

在您看来,执行这种功能的最佳方式是什么?我看到 3 条可能的路径:

  1. 更新 Kerberos 身份验证的 Keycloak 代码(https://github.com/keycloak/keycloak/tree/575851d45c8c770bee02ef6682def665f0370636/federation/kerberos/src/main/java/org/keycloak/federation/kerberos),但这似乎是重大变化。

  2. 实现一个 Kerberos Authenticator SPI ( https://www.keycloak.org/docs/latest/server_development/index.html#_auth_spi ),它会做我所描述的

  3. 实现一个 UserStorage SPI,该 SPI 将使用我描述的 Kerberos TGT 处理的附加功能来模仿现有的。(https://www.keycloak.org/docs/latest/server_development/index.html#_user-storage-spi

感谢您的阅读。

问候,

克里斯托夫。

标签: securityldapkeycloakopenid-connectkerberos

解决方案


推荐阅读