这就是我想要发生的事情。
当前设置:在Websphere v8(App1和App2)中部署了两场战争。两者都有一个登录功能,用户输入用户名和密码进入应用程序。这不是使用LDAP或JAAS,它只是来自db的普通查询来检查用户名和密码是否正确。
问题:已经开始“组合”这两个应用程序,其中App1中经过身份验证的用户现在可以直接访问App2而无需登录并拥有相同的会话。如果用户在没有记录的情况下访问App2中的模块,则会将用户定向到App1的登录页面进行登录。
其他因素: App1和App2位于同一个框中和同一单元格中的同一个websphere实例中。
问题: 是否可以在websphere中实现App1和App2之间的SSO和共享会话?
答案 0 :(得分:1)
根据我的阅读,您要么自己使用App1和App2执行身份验证,这意味着不使用WebSphere Security,或者您在两个不同的WebSphere Cell中都有应用程序,而没有设置SSO。
如果是选项1,我强烈建议您查看WebSphere Security以及容器为您提供的内容。
这让我选择了没有SSO的两个单元格 WebSphere Application Server默认构建一个Cell wide SSO模型。单元格表示一起控制的服务器集合。缺省情况下,WebSphere使用名为LTPA_Token或6.1 LTPA_Token2的令牌。在单元级别,安全性是配置的,其中包括SSO域,实际上“只是”cookie域。 WebSphere将标记内的身份验证状态保存为cookie,浏览器将此提交给与cookie域匹配的服务器。
说完了。如果您有两个单元,则可以在这两个单元之间交换安全密钥,这样他们就可以理解两者创建的安全性令牌。您需要确保一些其他信息,如领域,安全域,附加用户存储库。
正如您所提到的,App2应该将所有用户发送到App1,您可能需要定义端点来处理web.xml中的身份验证并让它直接指向App2或在App2上编写TAI(Trust Association Interceptor)来发送所有未经过身份验证的App1请求
此外,您还可以在两个应用程序之前放置一个身份验证代理,这只会确保身份验证状态,并在请求传递给后端时建立安全状态。
供参考