对于当前的应用,客户向我们提出了以下要求:
- Glassfish 4 应用服务器的使用
- JEE7
- PrimeFaces
- 允许针对 LDAP 和 JDBC 数据库进行授权,可以在部署应用程序后在这两种数据库之间进行切换
我想知道是否有人对我如何实现这一目标有任何想法,因为我只使用预定义的领域与 glassfish 合作,而不必创建一个。其流程是,部署应用程序后,管理员可以选择访问站点的用户是根据 LDAP 还是本地 JDBC 数据库进行身份验证。这一决定不应该影响前端的流程,这意味着应该只有一个登录页面,该页面转到一个功能,然后根据配置确定使用哪个领域进行身份验证。
任何帮助将不胜感激。
最佳答案
我认为你有三种选择:
配置两个 glassfish 领域并在 web.xml:/web-app/login-config/auth-realm
中进行切换
- 优点:非常简单,您可以使用管理 ui(服务器配置 -> 安全 -> 领域)或 asadmin 来配置它们
- 缺点:
- 一次只能使用一个
- 必须在应用程序外部配置
- 切换需要重新加载应用程序(无需重新部署,只需重新加载)
开发自己的 glassfish 领域,其中封装了 jdbc 领域和 ldap 领域
- 优点:
- 您可以同时使用两者(无需切换)
- 您仍然可以使用 ui 或 asadmin 配置它们,但支持有限
- 缺点:
- 需要领域和模块类的知识和外部开发
- 必须在应用程序外部配置
- glassfish 特定实现(不适用于其他容器)
开发可插入身份验证架构 (JASPIC)
- 优点:
- 程序化方法:最大程度的自由
- 可以在应用程序内部署(无需外部配置且无需重新加载)
- 标准,可以在(几乎)所有 JEE 容器中重用
- 缺点:
- 非常难以开发,需要有关 JASPIC 和(可选,但建议)JAAS 的知识
- 缺少 JASPIC 文档
如果您确实想要可插入的身份验证,一些引用文献是 here和优秀的article来自Arjan Tijms
祝你好运!
关于java - 以编程方式配置 glassfish 身份验证的两个领域,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21540080/