[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 メーリングリストの案内