0

SpringSecurity2.0.3を使用してLDAP認証を実行しようとしています

これが私の設定です

<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-0C090334、コメント:AcceptSecurityContextエラー、データ525 、vece

ドメイン名はどこに記載すればよいですか?

4

1 に答える 1

1

オンラインでエラーメッセージを検索すると、ActiveDirectoryエラーの次のページのようなものが見つかります。このページの上部にエラーが表示されます。

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によると、ユーザーは存在しません。DNパターンの一部として属性を使用しようとしましsAMAccountNameたが、LDAP属性であるため機能しません。最初にこの属性の値でユーザーを見つけるには、検索を使用する必要があります。このサイトやWebの他の場所でそれを行う方法の例があります。検索Beanをコメントアウトしたので、すでに試したようです。それがうまくいかなかった場合は、質問で何がうまくいかなかったかを説明する必要があります。

実際、コンテキストソースに問題があるため、失敗した可能性があります。userDnプロパティの値が間違っています。ディレクトリ内の有効な識別名である必要がありますが、「sAMAccountName=username」はそうではありません。「base」プロパティも正しくないように見えます。これは通常、ルート(dc=mycompany,dc=com最後にある)があるツリーである必要があります。したがって、おそらくそうなるはずou=mygroup,ou=mycountry,dc=mycompany,dc=comです。

最後に、バージョン2.0.3を使用しないでください。既知のセキュリティの脆弱性があります。使用しているライブラリのパッチと新しいバージョンを常に最新の状態に保ちます。OWASPの「トップ10」の6番目です。修正されたバグに遭遇した場合に備えて、最新バージョンを確認することも理にかなっています。

于 2012-10-20T14:29:07.740 に答える