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

小林正和 [E-MAIL ADDRESS DELETED]
2008年 6月 11日 (水) 18:23:42 JST


小林です。

ありがとうございます。

> 1. エンティティで検索してみる
を実行してみましたが、以下のような例外が発生しました。

[DIR0001]javax.naming.NameNotFoundException: [LDAP: error code 32 - No
Such Object];
remaining name 'ou=People,o=foo,o=isp'

> 2. PasswordObject以外に別のエントリを特定するプロパティを追加する
は、PasswordObject クラスに uid プロパティを追加して、
PasswordObjectDirectoryDao インターフェイスに

@Arguments("uid")
PasswordObject getByUid(String uid);

というメソッドを追加するという意味でよろしかったでしょうか。

このようにしてみましたが、
PasswordObject passwordObject = passwordObjectDao.getByUid("masapon1967");
では passwordObject が null になっていました。

> 逆に Person エンティティ に オブジェクトクラス PasswordObject が持つ属性用の
> プロパティを足しても構いません。
ということなので、
Person クラスに passwordExpirationTime プロパティを追加して
Person person = personDirectoryDao.getByUid("masapon1967");
を呼び出しました。
person は null ではありませんでしたが、passwordExpirationTime は
null になっていました。

> それでも上手くいかない場合、ディレクトリサーバに設定されているACLに対して
> directory.dicon で定義している接続用の user と password 設定が適切では
> ないのではないかと思います(アクセス権限不足)。
directory.dicon で定義している接続用の user と password で Apache LDAP Studio
を使用してアクセスしているのですが、
>> Apache LDAP Studio で、フィルタを (&(objectClass=person)(uid=masapon1967))
>> とし、Returning Attributes を
>> passwordExpirationTime (passwordObject の属性)にしたところ、passwordExpirationTime に想定した
>> パスワード有効期限が設定されていることは確認できました。
ので、 この user でアクセス権限があるのではと考えています。

> Apache LDAP Studio でS2Directoryが出力している
> &((objectClass=passwordObject)(dn=uid=masapon1967,ou=People,o=foo,o=isp))
> を実行するとどうなりますでしょうか。
これで実行すると、「No Result」、つまり、1件もヒットしません。

> ディレクトリサーバは、iPlanet Directory Serverでしょうか?
> 参考までにバージョンも教えてください。
はい、iPlanet Directory Server です。バージョンは不明なので、
明日担当に聞いてみます。

ほかに対応方法があるでしょうか。よろしくお願いします。

-- 
----------------------------------------------
Masakazu Kobayashi


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