我正在使用KeyCloak自动将包含的用户导入到现有LDAP中。现在,我需要知道KeyCloak如何与LDAP通信。具体来说,KeyCloak如何将密码传递给LDAP以验证用户凭据。
我试图在Internet上进行搜索,但是找不到有关此内容的论坛,博客或文档。我需要这个来通过我们的安全要求。
答案 0 :(得分:3)
这取决于所使用的协议。
添加LDAP用户联盟时,可以同时使用ldap
和ldaps
协议。
将Connection URL
设置为ldap://ldapserver.domain.com
时,
使用ldap协议,并且Keycloak通过端口389(默认情况下)与服务器通信,这意味着从LDAP服务器提取的所有数据都将通过纯文本格式,包括在进行身份验证请求时输入的密码。
另一方面,将Connection URL
设置为ldaps://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使用SSL 与LDAP服务器通信。 ...
关于密码,这似乎是OP的特定问题,根据文档,密码会按原样发送到提供,如果使用ldaps
,则密码会通过加密的TLS隧道传输。
14.3.7。密码哈希
从Keycloak更新用户密码并将其发送到LDAP后, 它总是以纯文本形式发送。这与更新 内置Keycloak数据库的密码,哈希和加盐时 在将密码发送到数据库之前将其应用于密码。如果是 LDAP,Keycloak依靠LDAP服务器提供哈希和 撒盐密码。
大多数LDAP服务器(Microsoft Active Directory,RHDS,FreeIPA) 默认提供此功能。其他一些(OpenLDAP,ApacheDS)可能会存储 默认情况下,密码为纯文本格式,您可能需要明确 为他们启用密码哈希。请参阅您的LDAP文档 服务器更多详细信息。
答案 1 :(得分:2)
Keycloak通过LDAP协议与LDAP兼容目录服务通信。 Keycloak docs谈到Active Directory作为LDAP服务,但是任何与LDAP兼容的服务器都可以工作。 LDAP作为协议,允许通过SSL(aka LDAPS)以未加密模式以及安全模式与服务器建立连接。除了普通的旧LDAP之外,Keycloak supports LDAPS:
14.3.4。通过SSL连接到LDAP
当您配置到LDAP存储的安全连接URL时(例如 ldaps://myhost.com:636),Keycloak将使用SSL与LDAP服务器进行通信。
Keycloak文档继续说,当在Keycloak中更新密码并将其推回LDAP时,将以纯文本方式进行。这有点误导。如果您使用LDAPS,则在某些情况下,密码确实以纯文本形式发送,但将其包装在SSL中作为传输层。