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_SCOPE
SearchControls
<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 [...]