Spring Security和LDAP MD5身份验证

时间:2012-10-24 22:56:26

标签: spring-security ldap spring-ldap

我需要进行Spring安全认证,其中密码以LDAP MD5 Hex编码格式存储的用户使用密码比较。对于LDAP SHA编码,我可以使用LDAPShaPasswordEncoder。我应该使用哪种编码器进行LDAP MD5编码?

2 个答案:

答案 0 :(得分:2)

<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>

答案 1 :(得分:0)

没有一个支持MD5。您必须自己实施PasswordEncoder。您可以使用LdapShaPasswordEncoder作为指南。它应该非常简单,特别是不涉及盐。

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