[Seasar-user:14641] Re: [S2Directory]passwordObjectの取得方法

Jun Futagawa [E-MAIL ADDRESS DELETED]
2008年 6月 11日 (水) 13:49:01 JST


ふたがわ (jfut) です。

On 2008/06/11 12:44,小林正和 wrote:

> s2-directory-generator.0.2.jar を使用して作成したエンティティをプロジェクトに
> 登録し、PersonDirectoryDao を作成することにより、特定uidの Person オブジェクトを
> 取得することはできました。
> Person person = personDao.getByUid("masapon1967"); //person != null でした。
> 
> PasswordObject には、オブジェクトを特定するプロパティとして dn があるので
> PasswordObjectDirectoryDao インターフェイスに
> 
> @Arguments("dn")
> PasswordObject getByDn(String dn);
> 
> というメソッドを追加したのですが、
> 
> DN が uid=masapon1967,ou=People,o=foo,o=isp のPasswordObject を取得するために、
> PasswordObject passwordObject =
> passwordObjectDao.getByDn("uid=masapon1967,ou=People,o=foo,o=isp");
> 
> としたところ、 passwordObject に null が返ってきます。

提示していただいた方法でも問題無く実行できそうですが、
次の方法で取得できないかひとまず試してみてください。

1. エンティティで検索してみる

# interface PasswordObjectDao に追加
public PasswordObject getPasswordObject(PasswordObject passwordObject);

# 実行コード
PasswordObject search = new PasswordObject();
search.setDn("uid=masapon1967,ou=People,o=foo,o=isp");
PasswordObject passwordObject = passwordObjectDao.getPasswordObject(search);

2. PasswordObject以外に別のエントリを特定するプロパティを追加する

エンティティには、そのオブジェクトクラスに関連しない属性を定義することもできます。
該当エントリに他の特定可能な属性がある場合、そちらを使用しても問題ありません。

例: uid
PasswordObject passwordObject = passwordObjectDao.getByUid("masapon1967");

逆に Person エンティティ に オブジェクトクラス PasswordObject が持つ属性用の
プロパティを足しても構いません。


それでも上手くいかない場合、ディレクトリサーバに設定されているACLに対して
directory.dicon で定義している接続用の user と password 設定が適切では
ないのではないかと思います(アクセス権限不足)。

> ちなみにこの場合、ログに Filter:
> &((objectClass=passwordObject)(dn=uid=masapon1967,ou=People,o=foo,o=isp))
> と表示されます。
> 
> Apache LDAP Studio で、フィルタを (&(objectClass=person)(uid=masapon1967))
> とし、Returning Attributes を
> passwordExpirationTime (passwordObject の属性)にしたところ、passwordExpirationTime に想定した
> パスワード有効期限が設定されていることは確認できました。

Apache LDAP Studio でS2Directoryが出力している
&((objectClass=passwordObject)(dn=uid=masapon1967,ou=People,o=foo,o=isp))
を実行するとどうなりますでしょうか。

> 環境
> S2 2.4.25
> S2Directory 0.6.1
> Tomcat 6.0.16

ディレクトリサーバは、iPlanet Directory Serverでしょうか?
参考までにバージョンも教えてください。

よろしくお願いします。

-- 
ふたがわ


Seasar-user メーリングリストの案内