Session、Cookie理解及SSO(单点登录--cas)

来源:互联网 发布:java字符串前后去空格 编辑:程序博客网 时间:2024/06/05 21:50

http://www.imooc.com/article/3555

HTTP是一个无状态协议。即对服务器来说,每次收到的浏览器HTTP请求都是单一独立的,服务器并不考虑两次HTTP请求是否来自同一会话,即HTTP协议是非连接会话状态协议。
对于Web应用登录,意味着登录成功后的后续访问,可以看做是登录用户和服务端的一次会话交互过程,直到用户登出结束会话。
如何在非连接会话协议之上,实现这种会话的管理? 我们需要额外的手段:

1.通过使用HTTP请求参数传递,这种方式对应用侵入性较大,一般不使用。

2.另一种方式就是通过cookie
cookie是HTTP提供的一种机制,cookie代表一小撮数据。服务端通过HTTP响应创建好cookie后,浏览器会接收下来,下次请求会自动携带上返回给服务端
用cookie的话可以通过保存账号密码,但是感觉这样很麻烦,还要往后台查数据库。
比较好的方式是服务端保存,cookie只保存会话信息的句柄。即在登录成功后,服务端可以创建一个唯一登录会话,并把会话标识ID通过cookie返回给浏览器,浏览器下次访问时会自动带上这个ID,服务端根据ID即可判断是此会话中的请求,从而判断出是该用户,这种操作直到登出销毁会话为止(感觉就是手动实现session)。
令人高兴的是,我们使用的Web应用服务器一般都会提供这种会话基础服务,如Tomcat的Session机制。
对于Cookie,处于安全性考虑,它有一个作用域问题,这个作用域由属性Domain和Path共同决定的。也就是说,如果浏览器发送的请求不在此Cookie的作用域范围内,请求是不会带上此Cookie的。
Path是访问路径,我们可以定义/根路径让其作用所有路径,Domain就不一样了。我们不能定义顶级域名如.com,让此Cookie对于所有的com网站都起作用,最大范围我们只能定义到二级域名如.taobao.com,而通常,企业的应用群可能包含有多个二级域名,如taobao.com、tmail.com、alitrip.com等等(这个就是cookie仅作用部分网页的原因)。

所以为了处理多系统的登录,所以要使用SSO
https://zhuanlan.zhihu.com/p/25007591

csdn的sso就完全和文章说的一样。

原创粉丝点击