Аутентификация LDAP с использованием Spring Security 2.0.3

Я пытаюсь выполнить аутентификацию LDAP с помощью Spring Security 2.0.3

Вот моя конфигурация

<bean id="contextSource" class="org.springframework.security.ldap.DefaultSpringSecurityContextSource">
        <constructor-arg value="ldap://IP:3268"/>
        <property name="base" value="dc=alliance",dc=com,OU=Users,OU=India"/>
        <property name="userDn" value="sAMAccountName=username" />
        <property name="password" value="password" />
    </bean>



    <bean id="ldapProvider" class="org.springframework.security.providers.ldap.LdapAuthenticationProvider">
        <sec:custom-authentication-provider/>
        <constructor-arg>
            <bean class="org.springframework.security.providers.ldap.authenticator.BindAuthenticator">
                <constructor-arg ref="contextSource"/>
                <!--<property name="userSearch" ref="ldapSearchBean"/>-->
                <property name="userDnPatterns">
                   <list><value>sAMAccountName={0}</value></list>
                 </property>
            </bean>
        </constructor-arg>
        <constructor-arg>
            <bean class="org.springframework.security.ldap.populator.DefaultLdapAuthoritiesPopulator">
                <constructor-arg ref="contextSource"/>
                <constructor-arg value="ou=groups"/>
                <property name="groupSearchFilter" value="member={0}"/>
                <property name="groupRoleAttribute" value="ou"/>
                <property name="rolePrefix" value="ROLE_"/>
                <property name="searchSubtree" value="true"/>
                <property name="convertToUpperCase" value="true"/>
            </bean>
        </constructor-arg>
    </bean>

Набор записей Maven, как показано ниже

<dependency>
            <groupId>org.springframework.security</groupId>
            <artifactId>spring-security-core</artifactId>
            <version>2.0.3</version>
            <exclusions>
                <exclusion>
                    <groupId>commons-logging</groupId>
                    <artifactId>commons-logging</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
<dependency>
            <groupId>org.springframework.ldap</groupId>
            <artifactId>spring-ldap</artifactId>
            <version>1.2.1</version>
        </dependency>

Исключение, которое я получаю, это

[BindAuthenticator, 2329165 @ qtp-24103634-0] - Не удалось выполнить привязку как sAMAccountName = csepena: org.springframework.ldap.AuthenticationException: [LDAP: код ошибки 49 - 80090308: LdapErr: DSID-0C0903Security data 5, комментарий: , vece

Где мне указать доменное имя?


person Java P    schedule 19.10.2012    source источник


Ответы (1)


Если вы поищете в Интернете сообщение об ошибке, вы найдете что-то вроде эта страница ошибок Active Directory, на которой ваша ошибка указана вверху:

Common Active Directory LDAP bind errors:

80090308: LdapErr: DSID-0C09030B, comment: AcceptSecurityContext error, data 525, v893
HEX: 0×525 – user not found
DEC: 1317 – ERROR_NO_SUCH_USER (The specified account does not exist.)
NOTE: Returns when username is invalid.

Итак, согласно AD, пользователя не существует. Вы пытались использовать атрибут sAMAccountName как часть шаблона DN, но это не сработает, поскольку это атрибут LDAP. Вам нужно использовать поиск, чтобы сначала найти пользователя по значению этого атрибута. Примеры того, как это сделать, есть где-нибудь на этом сайте и в Интернете. Похоже, вы уже пробовали, так как закомментировали поисковый компонент. Если это не помогло, вы должны были объяснить, что пошло не так в вашем вопросе.

На самом деле, похоже, что это не удалось, потому что с вашим источником контекста что-то не так. Значение для _ 3_ свойство неверно. Это должно быть действительное отличительное имя в каталоге, а не sAMAccountName = username. «Базовое» свойство тоже выглядит некорректно. Как правило, это должно быть дерево с корнем (dc=mycompany,dc=com в конце). Так что, вероятно, должно быть ou=mygroup,ou=mycountry,dc=mycompany,dc=com.

Наконец, вы не должны использовать версию 2.0.3. Он имеет известные уязвимости в системе безопасности. Всегда будьте в курсе исправлений и новых версий используемых вами библиотек - номер 6 в OWASP "десятка". Также имеет смысл проверить последнюю версию, если вы столкнулись с ошибкой, которая была исправлена.

person Shaun the Sheep    schedule 20.10.2012