0

我已将 Glassfish 3.0 配置为使用 OpenDS 2.2 目录使用 ldap 领域进行用户身份验证。用户身份验证工作正常(我正在使用配置了表单登录的 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|#]
...

有谁知道如何配置 Glassfish/OpenDS 以便在每次成功登录后正确设置 ds-pwp-last-login-time 属性?有谁知道服务器日志中显示的为权限检查生成保护域部分在做什么?

4

1 回答 1

0

如果每次用户登录时都有绑定请求,您可能需要检查 OpenDS 访问日志。如果没有,则意味着 GlassFish 中有一些缓存。要查看的另一件事是密码策略的 ds-cfg-last-login-time-format 属性部分。默认设置是使用 Day of resolution 捕获上次登录时间。所以最后登录时间只有在第二天登录时才会改变(通常是通过测试)。

卢多

于 2011-01-05T17:26:49.980 回答