KeyCloak 用户凭证加密

Ric*_*ich 4 openid encryption ldap openid-connect keycloak

我正在使用 KeyCloak 自动将包含的用户导入到现有的 LDAP 中。现在,我需要知道 KeyCloak 如何与 LDAP 通信。具体来说,KeyCloak 如何将密码传递给 LDAP 以验证用户凭据。

我试图在整个互联网上进行搜索,但找不到关于此的论坛、博客或文档。我需要这个来通过我们的安全要求。

Les*_*ter 6

这取决于所使用的协议。

添加 LDAP 用户联盟时,可以同时使用ldapldaps协议。

设置为Connection URLldap://ldapserver.domain.com,使用ldap协议,Keycloak 通过端口 389(默认情况下)与服务器通信,这意味着从 LDAP 服务器提取的所有数据都将通过纯文本形式,包括每次发出身份验证请求时的密码。

另一方面,设置Connection URLldaps://ldapserver.domain.com, 将使用LDAP over SSL/TLS(不要与LDAP+STARTTLS混淆,这是加密 LDAP 通信的另一种方式)并且 Keycloak 通过端口 636(默认情况下)与服务器通信。这意味着 Keycloak 和 LDAP 服务器之间的所有通信都将通过加密的 SSL/TLS 隧道进行,类似于浏览器和HTTPS网站的通信方式。

14.3.4. 通过 SSL 连接到 LDAP

当您为 LDAP 存储配置安全连接 URL(例如 ldaps://myhost.com:636 )时,Keycloak 将使用 SSL 与 LDAP 服务器进行通信。...

关于密码,这似乎是 OP 的具体关注点,根据文档,密码按原样发送给提供者,当然,如果ldaps使用,密码将通过加密的 TLS 隧道传输。

14.3.7. 密码散列

当用户的密码从 Keycloak 更新并发送到 LDAP 时,它总是以纯文本形式发送。这与将密码更新到内置 Keycloak 数据库不同,在将密码发送到 DB 之前对密码应用哈希和加盐。在 LDAP 的情况下,Keycloak 依赖 LDAP 服务器来提供密码的散列和加盐。

大多数 LDAP 服务器(Microsoft Active Directory、RHDS、FreeIPA)默认提供此功能。其他一些(OpenLDAP、ApacheDS)可能默认以纯文本形式存储密码,您可能需要为它们显式启用密码散列。请参阅 LDAP 服务器的文档以获取更多详细信息。


ide*_*ral 5

Keycloak 通过(drumroll,请)LDAP 协议与 LDAP 兼容的目录服务进行通信。Keycloak文档将Active Directory 称为 LDAP 服务,但任何符合 LDAP 的服务器都可以工作。LDAP 作为协议允许以未加密模式以及通过 SSL(又名 LDAPS)的安全模式连接到服务器。除了普通的旧 LDAP 之外,Keycloak 还支持LDAPS:

14.3.4. 通过 SSL 连接到 LDAP

当您为 LDAP 存储配置安全连接 URL(例如 ldaps://myhost.com:636)时,Keycloak 将使用 SSL 与 LDAP 服务器进行通信。

下面是一些配置的例子:一个 2

Keycloak 文档继续说,当 Keycloak 中的密码更新并推送回 LDAP 时,它是以明文形式完成的。这有点误导。如果您使用 LDAPS,在某些情况下密码确实以明文形式发送,但它作为传输层包装在 SSL 中。