Spring Security 和 LDAP MD5 认证

Posted

技术标签:

【中文标题】Spring Security 和 LDAP MD5 认证【英文标题】:Spring Security and LDAP MD5 authentication 【发布时间】:2012-10-15 01:50:18 【问题描述】:

我需要使用密码比较对密码以 LDAP MD5 十六进制编码格式存储的用户进行弹簧安全认证。对于 LDAP SHA 编码,我可以使用LDAPShaPasswordEncoder。我应该为 LDAP MD5 编码使用哪个编码器?

【问题讨论】:

【参考方案1】:
<bean id="ldapAuthenticationProvider"
    class="org.springframework.security.ldap.authentication.LdapAuthenticationProvider">
    <constructor-arg>
        <bean class="org.springframework.security.ldap.authentication.PasswordComparisonAuthenticator">
            <constructor-arg ref="contextSource" />
            <property name="passwordEncoder">
                <bean class="org.springframework.security.authentication.encoding.Md5PasswordEncoder" />
            </property>
            <property name="userDnPatterns">
                <list>
                    <value>uid=0,ou=people</value>
                </list>
            </property>
        </bean>
    </constructor-arg>
    <constructor-arg>
        <bean
            class="org.springframework.security.ldap.userdetails.DefaultLdapAuthoritiesPopulator">
            <constructor-arg ref="contextSource" />
            <constructor-arg value="ou=groups" />
            <property name="groupSearchFilter" value="(member=0)" />
            <property name="rolePrefix" value="ROLE_" />
            <property name="searchSubtree" value="true" />
            <property name="convertToUpperCase" value="true" />
        </bean>
    </constructor-arg>
</bean>

【讨论】:

【参考方案2】:

没有一个支持 MD5。你必须自己实现PasswordEncoder。您可以使用LdapShaPasswordEncoder 作为指导。它应该非常简单,尤其是在不涉及盐的情况下。

您可能应该开始考虑迁移到一个更安全的系统,该系统在哈希中包含盐。例如,也许您的目录可以支持多种格式,并且您可以将 SSHA 用于新用户或密码更改。

【讨论】:

以上是关于Spring Security 和 LDAP MD5 认证的主要内容,如果未能解决你的问题,请参考以下文章

Spring Security和LDAP身份验证

基于Spring LDAP和Spring Security的用户认证和权限控制Web实现

使用 Spring Security 的 ldap 身份验证

Spring Security LDAP 和记住我

如何使用带有 LDAP 的 Spring Security 获取用户信息

Spring 3,Spring Security,LDAP,如何向 LDAP 添加角色?