两个应用程序之间的共享会话-难题和方法



这就是我想要的。

当前设置:Websphere v8中部署了两个war(App1和App2)。两者都有登录功能,用户可以输入用户名和密码进入应用程序。这不是使用LDAP或JAAS,它只是从数据库中进行简单的查询,以检查用户名和密码是否正确。

问题:有人将这两个应用程序"合并"在一起,App1中经过身份验证的用户现在可以直接访问App2,而无需登录并拥有相同的会话。如果用户在没有登录的情况下访问App2中的某个模块,则会将用户引导到App1的登录页面进行登录。

其他因素:App1和App2在同一个websphere实例中的同一个框和同一个单元中。

问题:是否可以在websphere中实现SSO以及App1和App2之间的共享会话?

根据我所读到的内容,您要么使用App1和App2自行执行身份验证,也就是说不使用WebSphere Security,要么您在两个不同的WebSphere Cell中都有两个应用程序,其中没有设置SSO。

如果是选项1,我强烈建议您查看WebSphereSecurity以及容器在其中为您提供的内容。

这让我想到了没有SSO的选项二单元格websphereapplicationserver默认构建一个单元范围的SSO模型。一个单元是指一组服务器,它们被控制在一起。默认情况下,WebSphere使用一个名为LTPA_token或自6.1 LTPA_Token2以来的令牌。在单元级别配置安全性,其中包括SSO域,而SSO域实际上"只是"cookie域。WebSphere将身份验证状态作为cookie保存在令牌内部,浏览器将把它提交给与cookie域匹配的服务器。

话虽如此。如果你有两个单元格,你可以在这两个单元格之间交换安全密钥,这样他们都可以理解他们创建的安全令牌。您需要确保一些附加信息,如领域、安全域、附加的用户存储库。

正如你所提到的,App2应该将所有用户发送到App1,你可能需要定义端点来处理web.xml中的身份验证,并将其直接指向App2,或者在App2上写一个TAI(信任关联拦截器),将所有未经身份验证的请求发送到App1

此外,您还可以在两个应用程序前面放置一个身份验证代理,这将只确保身份验证状态,并在请求传递到后端时建立安全状态。

供参考

WebSphere Application Server信息中心主题

最新更新