0

春の認証マネージャーを使用して認証しようとすると、「資格情報が正しくありません」と表示されます。

Authentication request = new UsernamePasswordAuthenticationToken("john", "johnldap");
result = authenticationManager.authenticate(request);

SecurityApplicationContext.xml ファイルは次のとおりです。

  <authentication-manager alias="authenticationManager">
        <ldap-authentication-provider server-ref="ldapLocal"
            user-dn-pattern="uid={0},ou=People,dc=example,dc=com">         
        </ldap-authentication-provider> 
    </authentication-manager>
    <ldap-server url="ldap://127.0.0.1:389/dc=example,dc=com" manager-dn="admin" manager-password="xxxxxxxx" id="ldapLocal"  />

ただし、「ldapsearch」を使用すると、正常に接続できます。

ldapsearch -D "uid=john,ou=People,dc=example,dc=com" -w johnldap  -L "objectClass=*"

最初は、LDAP を呼び出す前にパスワードの md5 を実行するように spring に指示する必要があることが問題だと考えていました。したがって、それを applicationSecurtyContext.xml に追加します。

    <beans:bean id="passwordEncoder"  class="org.springframework.security.authentication.encoding.Md5PasswordEncoder">
    </beans:bean>
    <authentication-manager alias="authenticationManager">
        <ldap-authentication-provider server-ref="ldapLocal"
            user-dn-pattern="uid={0},ou=People,dc=example,dc=com">  
         <password-compare>
            <password-encoder ref="passwordEncoder"> </password-encoder>
        </password-compare>
        </ldap-authentication-provider> 
    </authentication-manager>
    <ldap-server url="ldap://127.0.0.1:389/dc=example,dc=com" manager-dn="admin" manager-password="xxxxxxxx" id="ldapLocal"  />

しかし、タグを追加すると、次のように表示されます。

LDAP: error code 34 - invalid DN]

ここで何が問題なのですか?

4

2 に答える 2

1

私の記憶が正しければuser-dn-pattern、自動的に追加されるため、ルート dn を含めないでください。だから使ってみてください:

user-dn-pattern="uid={0},ou=People">

password-encoderまた、単純なバインド認証のみを行いたい場合は、必要ないと思います。

于 2013-05-14T10:42:41.537 に答える
0

私はSpring Securityに接続するのに多くの時間を費やし、stackoverflowを見て、パスワードがmd5にあるため、エンコードに問題があるのではないかと考えました.上記のルートdnを個別に追加する必要がありましたが、パスワードはLDAPサーバーによってエンコードされます. 以下は私の作業バージョンです:

<ldap-server url="ldap://dsa.company.com:389/" manager-dn="cn=manager,dc=company,dc=com"
    manager-password="pass"></ldap-server>
<authentication-manager>
    <ldap-authentication-provider
        user-dn-pattern="cn={0},ou=people,dc=company,dc=com"
        group-search-base="ou=groups,dc=company,dc=com" />
</authentication-manager>
于 2013-12-03T13:09:00.490 に答える