LDAP レルムを使用したユーザー認証に OpenDS 2.2 ディレクトリを使用するように Glassfish 3.0 を構成しました。ユーザー認証は正常に機能します (フォーム ログインが構成された Web アプリケーションを使用しています)。
- 私の OpenDS サーバーは、属性 ds-pwp-last-login-time を使用してユーザーの最終ログイン時間を追跡するように構成されています (ユーザーのパスワード ポリシーで構成されているように)。Glassfish の起動後にユーザーが初めてログインすると、ds-pwp-last-login-time 属性が正しく設定されますが、その後ログインが成功するたびに属性が更新されません。
- Glassfish を再起動するか、使用している Web アプリケーションを無効化/有効化した後、ユーザーの初回ログイン時に属性 ds-pwp-last-login-time が再び正しく設定されますが、再度設定されることはありません。
これには次のいずれかの原因が考えられます。
- サーバー/アプリケーションの再起動後の最初のログイン時に、ds-pwp-last-login-time 属性を更新するステップがサーバーによって実行されますが、これは後続のログインには当てはまりません。
- Glassfish は、ldap レルムを使用してサーバーに認証済みのユーザーのローカル キャッシュを保持します。
セキュリティロガーをFINESTに設定してサーバーログを調べたところ、各ユーザーの最初のログイン中に次の行が出力されることがわかりました
....
[Web-Security] Policy Context ID was: MyApp/MyApp|#]
[Web-Security] Generating a protection domain for Permission check.|#]
[Web-Security] Checking with Principal : testuser|#]
[Web-Security] Checking with Principal : TestRole|#]
[Web-Security] Checking with Principal : dc=groups|#]
[Web-Security] Checking with Principal : dc=test|#]
[Web-Security] Checking with Principal : dc=com|#]
[Web-Security] Codesource with Web URL: file:/MyApp/MyApp|#]
...
ログインが成功するたびに ds-pwp-last-login-time 属性が正しく設定されるように Glassfish/OpenDS を構成する方法を知っている人はいますか? サーバーログに表示される権限チェック用の保護ドメインの生成セクションが何をしているのか知っている人はいますか?