如何实现自定义LdapAuthoritiesPopulator

时间:2013-05-28 09:24:51

标签: spring spring-security

这是我的spring-security.xml的一部分。 我的要求是 - 我只想使用嵌入式LDAP服务器,并希望将LdapAuthoritiesPopulator与itt一起使用

<security:authentication-manager>
            <security:ldap-authentication-provider  
                    user-search-filter="(uid={0})" 
                    user-search-base="ou=users"
                    group-search-filter="(uniqueMember={0})"
                    group-search-base="ou=groups"
                    group-role-attribute="cn"
                    role-prefix="ROLE_">
            </security:ldap-authentication-provider>
    </security:authentication-manager>

    <!-- Use an embedded LDAP server. We need to declare the location of the LDIF file
            We also need to customize the root attribute default is -->
    <security:ldap-server ldif="classpath:mojo.ldif" root="dc=springframework,dc=org"/>

我想使用我的自定义LdapAuthoritiesPopulator。 如何在嵌入式ldap服务器中使用它。 我现在是新手。

1 个答案:

答案 0 :(得分:0)

您可以使用DefaultLDAPAuthoritesPopulator配置身份验证提供程序,并提供详细信息以查找角色组。如果您的案例有更具体的内容,您可以扩展此类。看看spring-security-samples。我也是Spring-security的新手,但我发现源代码非常有用。祝你好运。

FYI contextSource bean DefaultSpringSecurityContextSource应该配置LDAP服务器的URL。

希望这有帮助。

<bean id="ldapAuthenticationProvider" class="org.springframework.security.ldap.authentication.LdapAuthenticationProvider">
   <constructor-arg>
       <bean class="org.springframework.security.ldap.authentication.BindAuthenticator">
            <constructor-arg ref="contextSource"/>
                <property name="userSearch">
                    <bean id="userSearch" class="org.springframework.security.ldap.search.FilterBasedLdapUserSearch">
                       <constructor-arg index="0" value="ou=Google,ou=People"/>
                       <constructor-arg index="1" value="(uid={0})"/>
                       <constructor-arg index="2" ref="contextSource"/>
                    </bean>
                </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="searchSubtree" value="true"/>
        </bean>
   </constructor-arg>
   <property name="authoritiesMapper">
         <bean class="org.springframework.security.core.authority.mapping.SimpleAuthorityMapper">
                <property name="convertToUpperCase" value="true"/>
          </bean>
    </property>
</bean>

 <bean id="contextSource" class="org.springframework.security.ldap.DefaultSpringSecurityContextSource">
    <constructor-arg value="ldap://127.0.0.1:389/dc=google,dc=com"/>
</bean>