2

LDAP サーバーで Jasig CAS サーバーの最新バージョン (4.0.0) を使用しています。

ユーザーは、次の LDAP 構造に保存されます。ou=Users,ou=SSOTEST,dc=mycompany,dc=com

私が欲しいのは、トップレベルからユーザーを検索することです (例: ou=SSOTEST,dc=mycompany,dc=com)。

CAS サーバーにはLdapPersonAttributeDao、検索フィルターに一致するオブジェクトを探している Bean があります。この Bean のコードは次のとおりです。

<bean id="ldapPersonAttributeDao"
      class="org.jasig.cas.persondir.LdapPersonAttributeDao"
      p:connectionFactory-ref="searchPooledLdapConnectionFactory"
      p:baseDN="ou=SSOTEST,dc=company,dc=com"
      p:searchControls-ref="searchControls"
      p:searchFilter="uid={0}">
    <property name="resultAttributeMapping">
        <map>
            <!--
               | Key is LDAP attribute name, value is principal attribute name.
               -->
            <entry key="memberOf" value="userMemberOf" />
            <entry key="cn" value="userCn" />
        </map>
    </property>
</bean>

そして今、 (2)レベル(スコープレベル値に従って)searchControlsでルックアップを行うBean 。SUBTREE_SCOPESearchControls

<bean id="searchControls"
      class="javax.naming.directory.SearchControls"
      p:searchScope="2"
      p:countLimit="10" />

CAS サーバーを実行して認証しようとすると、すべてが機能しますが、追加の属性は返されません。問題は、必要な値に設定されていないように見えるsearchScopeにあると思います。サーバーからの出力ログは次のとおりです。

<execute request=[org.ldaptive.SearchRequest@-1312441815::baseDn=ou=SSOTEST,dc=mycompany,dc=com, searchFilter=[org.ldaptive.SearchFilter@-3391 91059::filter=uid={0}, parameters={0=myuser}], returnAttributes=[], searchScope=null, timeLimit=0, sizeLimit=10 [...]

4

1 に答える 1

3

この質問が出されてからしばらく経ちました。しかし、次を追加することでこの問題を解決できました。

<bean class="org.springframework.context.annotation.CommonAnnotationBeanPostProcessor" />

deployerConfigContext.xml に。

この問題の原因は、@PostConstruct アノテーションが実行されていないため、LdapPersonAttributeDao の initalize メソッドが呼び出されていなかったことです。このため、searchScope 変数は設定されませんでした。

于 2015-01-21T23:51:32.433 に答える