Java中不使用cookies实现单点登录

5

我经常从我的经理那里遇到这个问题,如果客户端禁用cookies,SSO会如何工作,但我没有任何答案。我们目前正在使用JOSSO进行单点登录。是否有任何开源框架支持单点登录而不使用cookie机制。

2个回答

3
在没有cookie的情况下,您需要在每个url请求中嵌入一些参数。例如,在登录后,您可以为用户分配一些任意id,并将其嵌入到每个链接中,如http://mydomain.com/main?sessionid=123422234235235。这可能会变得非常混乱,因为每个链接都必须在发送之前进行修复,这会减慢您的内容速度。这也涉及到安全、日志记录和会话历史等问题,当状态在cookie中时,这些问题并不是很重要。
对于已登录的用户,进行简单的cookie测试,如果他们没有启用cookie,则将其发送到错误页面可能更简单。

3
CAS项目通过将“票证”作为URL查询参数从登录服务器传递给使用应用程序,然后使用反向通道请求返回到登录服务器以验证票证的真实性。这消除了对cookies的需求,因此可以跨域工作,但它有点“啰嗦”。
另一个更为健壮的解决方案是使用基于SAML的产品,SAML是跨域单点登录的行业标准。有一些开源产品使用SAML,CAS本身也有一个SAML扩展,但它们通常设置相当复杂。Cloudseal也基于SAML,使用起来更加简单。Cloudseal平台本身作为托管服务提供,但所有客户端库都是开源的。
当然,所有这些解决方案都只是将安全上下文从一个服务器传递到另一个服务器,使用应用程序无疑会创建自己的本地会话,因此您需要使用URL重写而不是cookies。
免责声明:我为Cloudseal工作 :)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接