在两个应用程序之间共享会话 - 困境和方法

时间:2015-04-22 08:15:13

标签: websphere single-sign-on websphere-8

这就是我想要发生的事情。

当前设置:在Websphere v8(App1和App2)中部署了两场战争。两者都有一个登录功能,用户输入用户名和密码进入应用程序。这不是使用LDAP或JAAS,它只是来自db的普通查询来检查用户名和密码是否正确。

问题:已经开始“组合”这两个应用程序,其中App1中经过身份验证的用户现在可以直接访问App2而无需登录并拥有相同的会话。如果用户在没有记录的情况下访问App2中的模块,则会将用户定向到App1的登录页面进行登录。

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

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

1 个答案:

答案 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请求

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

供参考

WebSphere Application Server Infocenter Topic