0

組み込みのSpring LDAPサーバー構成を使用して、Springセキュリティフレームワークを使用してLDAP認証とDB承認を達成しようとしています。ログインしようとすると、次のエラー メッセージが表示されます: 結果コード: (INVALID_CREDENTIALS) invalidCredentials

問題は:構成1を使用するとログインの問題が発生しますが、構成2を使用すると機能します。助けを求める :

構成 1:

<security:authentication-manager>       
   <security:authentication-provider ref="ldapActiveDirectoryAuthProvider" />
</security:authentication-manager>

<bean id="ldapActiveDirectoryAuthProvider"
   class="org.springframework.security.ldap.authentication.LdapAuthenticationProvider">
    <constructor-arg>
        <bean class="org.springframework.security.ldap.authentication.BindAuthenticator">
            <constructor-arg ref="appLdapServer" />
            <property name="userDnPatterns">
                <list>
                    <value>uid={0},ou=users</value>
                </list>
            </property>
        </bean>
    </constructor-arg>
    <constructor-arg>
        <bean class="com.smd.security.UserServiceBean" />
    </constructor-arg>
</bean>

<security:ldap-server id="appLdapServer" ldif="/WEB-INF/conf/mojo.ldif" root="o=mojo" port="007" />

構成 2:

<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>

<security:ldap-server id="appLdapServer" ldif="/WEB-INF/conf/mojo.ldif" root="o=mojo" port="007" />

LDIF ファイルのスニペット:

dn: o=mojo
objectClass: organization
objectClass: extensibleObject
objectClass: top
o: mojo

dn: ou=users,o=mojo
objectClass: extensibleObject
objectClass: organizationalUnit
objectClass: top
ou: users

dn: cn=John Milton,ou=users,o=mojo
objectClass: organizationalPerson
objectClass: person
objectClass: inetOrgPerson
objectClass: top
cn: John Milton
sn: Milton
uid: jmilton
userPassword:: cGFzcw==

(パスワードは pass です)

LDAP サーバーのログで、正しいパスワードが渡されていることがわかります。

これを読んでくれてありがとう。アミット

4

1 に答える 1

1

BindAuthenticator最初の設定では、LDAP DN に特定のパターンを使用するようにに指示していますがuid={0}、実際にはuid属性からまったく構築されておらず、代わりに共通名 ( cn=John Milton) を使用しています。

uidこれは、特定の属性を持つユーザーの検索を使用している 2 番目の構成とは異なります。

リファレンス マニュアルusedDnsPatternsで説明されているように、構成からを削除し、BindAuthenticator代わりに検索 Bean を構成する必要があります。

<bean 
  class="org.springframework.security.ldap.authentication.BindAuthenticator">
   <constructor-arg ref="appLdapServer"/>
   <property name="userSearch" ref="userSearch" />
</bean>

<bean id="userSearch"
  class="org.springframework.security.ldap.search.FilterBasedLdapUserSearch">
   <constructor-arg index="0" value="ou=users"/>
   <constructor-arg index="1" value="(uid={0})"/>
   <constructor-arg index="2" ref="appLdapServer" />
</bean>
于 2012-06-17T17:24:02.757 に答える