0

这是我的 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 服务器一起使用。到目前为止,我是春天的新手。

4

1 回答 1

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>
于 2013-05-31T19:41:03.500 回答