我有几个带有JSF页面的WAB包。我知道如何创建简单的JSF登录页面。问题是 WAB 包如何共享用户会话?我想要一个登录菜单来注册所有 WAB 包的会话。
每个 WAB 都部署为单独的 Web 应用程序。我不确定您将 WAB 部署到哪个容器,但一些 servlet 引擎(例如。Tomcat 或 Jetty)可以配置为在不同的 Web 应用程序 (WAR) 之间共享会话数据。(请参阅战争之间的共享会话)
另一种选择是开发自己的单点登录服务。此服务可以部署为 OSGi 捆绑包,并由每个 WAB 使用。登录的第一个 WAB 向服务注册用户和机密。密钥还以加密方式存储在对整个域有效的安全 cookie 中(无路径)。一旦另一个WAB注意到cookie,它就可以立即登录用户。不过,每个WAB仍然有自己的会话。但单点登录服务也可用于在 WAB 之间共享其他数据。该服务还应实现一些清理处理以丢弃旧数据。您还可以实施其他安全选项来使服务适应您的需求。