0

このアプリケーション (apache Roller) で LDAP 認証を機能させるのにかなりの時間を費やしてきました。「正しいフィールドにデータを入力して実行する」だけのようですが、データベースに対して認証を試みています (デフォルトの認証方法)。

ある認証マネージャーを別の認証マネージャーよりも優先して使用するように spring-security に指示していることがわからないので、おそらく最初に変更する必要があります。ドキュメントを読むのに 2 日間費やした後、それを理解することはできません。

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

1 に答える 1

0

あなたを助けるために、より詳細な情報が必要です。表示されるエラー メッセージがある場合は、スタック トレースをコピーします。

私が気づいたことの 1 つは、BindAuthenticator にあります。ldapUserSearch Bean を作成する代わりに、コンテキスト ソースと userDnPatterns を指定できます。

<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>
于 2010-02-03T19:18:16.043 に答える