0

我想知道如何验证属于 LDAP 目录中不同基础的用户

我的文件配置是:

<!-- LDAP -->

        <security:ldap-server url="ldap://192.168.10.220:389/o=org" manager-dn="uid=admin,ou=Admins,o=org" manager-password="password" />

        <bean id="ldapAuthProvider" class="org.springframework.security.ldap.authentication.LdapAuthenticationProvider">
                <constructor-arg>
                        <bean class="org.springframework.security.ldap.authentication.BindAuthenticator">
                                <constructor-arg ref="contextSource" />
                                <property name="userDnPatterns">
                                        <list>
                                                <value>uid={0}</value>
                                        </list>
                                </property>
                        </bean>
                </constructor-arg>
                <constructor-arg>
                        <bean class="edu.mit.kit.userdetails.MappedLdapAuthoritiesPopulator">
                                <property name="admins">
                                        <set>
                                                <value>user1</value>
                                        </set>
                                </property>
                        </bean>
                </constructor-arg>
        </bean>

        <bean id="contextSource" class="org.springframework.ldap.core.support.LdapContextSource">
                <property name="url" value="ldap://192.168.10.220:389" />
                <property name="base" value="ou=comp,ou=Users,o=org" />
                <property name="userDn" value="admin1,ou=Admins,o=org" />
                <property name="password" value="password" />
        </bean>

        <bean id="ldapTemplate" class="org.springframework.ldap.core.LdapTemplate">
                <constructor-arg name="contextSource" ref="contextSource" />
       </bean>

我的 LDAP 方案根是:o=org,每个用户都有一个不同的“ou”。

以 3 个用户为例:

  • 用户 1 : uid=user1,ou=用户,o=org
  • user2: uid=user2,ou=comp, ou=Users,o=org
  • user3: uid=user3,ou=fi_Users,o=org

因此,我正在寻找一种方法,可以在不将所有 LDAP 方案放入此 xml 文件配置中的情况下对这些用户进行身份验证。

4

1 回答 1

0

定义一个'searchbean'

<beans:bean id="ldapUserSearch" class="org.springframework.security.ldap.search.FilterBasedLdapUserSearch">
 <beans:constructor-arg value=""/>
 <beans:constructor-arg value="uid={0}"/>
 <beans:constructor-arg ref="contextSource"/>
</beans:bean>

并使用

<beans:property name="userSearch" ref="ldapUserSearch"/>

代替

<property name="userDnPatterns">
 <list>
   <value>uid={0}</value>
 </list>
</property>

这将首先搜索条目,这被认为是 LDAP 最佳实践,而不是构建用于 LDAP 绑定操作的 DN。

旁注:由于密码在 LDAP 绑定操作期间通过线路以明文形式传输,因此不要使用 LDAP,而是使用 LDAPS。即使使用 StartTLS 扩展 LDAP 操作也允许以明文形式向客户端发送密码,尽管您可以在服务器端强制实施安全通道……但为时已晚,密码可能已经被窃听。

于 2017-02-23T20:24:09.553 回答