我正在使用Glassfish 3.1.1作为应用服务器开发Java EE 6应用程序。我使用声明性和程序性安全性。我在部署描述符中定义了几个角色,并定义了所有的安全约束。
我使用的是JDBCReal,现在我把它改成了LDARealm。因此,我希望在不依赖LDAP组的情况下管理用户组映射。换句话说,我想向LDAP进行身份验证,但使用RDBM进行授权,询问当前用户是否属于X组。
我认为有一种方法可以"覆盖"isUserInRole方法。在搜索过程中,我听说过类似JACC的东西,我发现有一些方法可以将自定义JACC提供程序或类似的东西插入到应用程序服务器,但我找不到任何自定义JACC实现,我不知道如何做到这一点(或事件,如果它能工作的话…)
根据"使用领域、用户、组和角色",领域是"识别web应用程序的有效用户的用户和组的完整数据库"。领域定义了一组凭据和角色。
Glassfish还有登录模块,用于定义用户的身份验证方式,例如用户名/密码、证书等。实际上,只支持用户名/密码棒。
因此,根据我的理解,您将需要实现一个混合LDAP/JDBC领域。以下是自定义登录模块和领域的示例代码。你可以看到这与我的答案相似。