KeyCloak用户凭证加密

时间:2019-08-27 09:01:51

标签: encryption ldap openid keycloak openid-connect

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

我试图在Internet上进行搜索,但是找不到有关此内容的论坛,博客或文档。我需要这个来通过我们的安全要求。

2 个答案:

答案 0 :(得分:3)

这取决于所使用的协议。

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

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服务器进行通信。

以下是一些配置示例:one two

Keycloak文档继续说,当在Keycloak中更新密码并将其推回LDAP时,将以纯文本方式进行。这有点误导。如果您使用LDAPS,则在某些情况下,密码确实以纯文本形式发送,但将其包装在SSL中作为传输层。