Spring security 2.0.5 Настройка аутентификации LDAP с Active Directory - PullRequest
0 голосов
/ 03 февраля 2010

У меня чертовски много времени пыталось заставить LDAP-аутентификацию работать с этим приложением (apache Roller).Кажется, что это будет просто «заполнить правильные поля и уйти», но я все еще пытаюсь аутентифицироваться на базе данных (метод аутентификации по умолчанию).

Я не понимаю, что говорит Spring-Securityиспользовать один менеджер аутентификации поверх другого, так что это, вероятно, первое, что нужно изменить.Потратив два дня на чтение документации, не приблизимся к ее выяснению.

<beans:bean id="ldapUserSearch" class="org.springframework.security.ldap.search.FilterBasedLdapUserSearch">
    <beans:constructor-arg index="0" value="CN=stuff,DC=domain"/>
    <beans:constructor-arg index="1" value="uid={0}"/>
    <beans:constructor-arg index="2" ref="initialDirContextFactory"/>         
    <beans:property name="searchSubtree" value="true"/>           
</beans:bean>     

<beans:bean id="ldapAuthProvider" class="org.springframework.security.providers.ldap.LdapAuthenticationProvider">
    <beans:constructor-arg>
        <beans:bean class="org.springframework.security.providers.ldap.authenticator.BindAuthenticator">
            <beans:constructor-arg ref="initialDirContextFactory"/>
            <beans:property name="userSearch" ref="ldapUserSearch"/>
        </beans:bean>
    </beans:constructor-arg>
    <beans:constructor-arg ref="jdbcAuthoritiesPopulator"/>
</beans:bean>    

<beans:bean id="jdbcAuthoritiesPopulator" class="org.apache.roller.weblogger.ui.core.security.AuthoritiesPopulator">
    <beans:property name="defaultRole" value="groupNameUserHasToBelongTo"/>
</beans:bean>

1 Ответ

0 голосов
/ 03 февраля 2010

Нам нужно больше деталей, чтобы помочь вам. Какое сообщение об ошибке вы видите, если есть, скопируйте трассировку стека.

Одна вещь, которую я заметил, в BindAuthenticator: вы можете указать источник контекста и userDnPatterns вместо создания bean-компонента ldapUserSearch.

<bean id="ldapAuthProvider"
        class="org.springframework.security.providers.ldap.LdapAuthenticationProvider">
  <constructor-arg>
    <bean class="org.springframework.security.providers.ldap.authenticator.BindAuthenticator">
      <constructor-arg ref="contextSource">
      </constructor-arg>
        <property name="userDnPatterns">
          <list>
              <value>CN={0},OU=Users,OU=_Units,DC=corporate,DC=mycompany,DC=com</value>
          </list>
        </property>
        <property name="userAttributes">
            <list>
                <value>objectSID</value>
                <value>userPrincipalName</value>                    
            </list>
        </property>
    </bean>
  </constructor-arg>
    <constructor-arg>
      <bean class="com.security.AuthoritiesPopulator">
      </bean>
    </constructor-arg>
    <property name="userDetailsContextMapper">
        <bean class="com.corp.CustomLdapUserDetailsMapper"/>
    </property>
    <security:custom-authentication-provider/>
</bean>
...