我要投搞

标签云

收藏小站

爱尚经典语录、名言、句子、散文、日志、唯美图片

当前位置:老奇人论坛一平特肖 > 单点 >

像微博、知乎还有简书等等

归档日期:08-12       文本归类:单点      文章编辑:爱尚语录

  上面就是全部我知晓的SSO的实现了,因为之前一直在做相关的东西,这个过程中也做了很多的挣扎和思考,整理出来,帮助所有正在做的童鞋们。如果有什么错误还请指出,有什么更好的方法也希望能分享给我。感谢。

  这种办法可能十分简单,你可以通过后端的response写,也可以用前端js去写,但是必须有对所有需要“单点登录”的站点进行逐一的写入。用脚想这种办法也是行不通的,因为你需要维护一个站点的列表,维护工作十分复杂,同时对于增加站点也会特别痛苦。对于Cookie的销毁也是十分复杂的,因为还是要对所有域名下的Cookie进行删除。也就是说将原来需要做的工作增加了n倍。对于小型站点这种办法是可取的。

  其实SSO的实现很灵活,CAS只是说了一个原理,至于具体怎么实现,需要平衡安全性、易用性等诸多因素,所以也没有一个固定的实现方案。

  引入这两个概念的根本原因是因为Http协议是无状态的,也就是说它不能建立起多次请求之间的关系。所以需要引入一个能有浏览器或服务器保存的一个上下文状态,也就是Cookie和Session。说到底Session的实现是依赖于Cookie的,因为Cookie是真正的由浏览器保存的状态,Session是利用了JSessionID。在我看来其实两者有差异,但是根本的依赖是一样的。Cookie也是有生命周期的,像Session级别或者有一定“寿命”的Cookie。一切是由浏览器去维护的。

  这种办法算是一个简化版的SSO,实现思想也十分的“狡猾”。但是对于小网站做跨域登录的处理却十分的有用,具体思路如下:

  之前楼主主要是做账户和Passport这方面的工作,其实在跨域这也是碰见了一些问题。

  CAS可不是java中的Compare-And-Swap,它是一个开源的单点登录系统(SSO)。实现的机制不算复杂但是思想十分灵巧。用CAS也可以快速实现单点登录。盗图一张说明sso单个域的登录和验证流程:

  其实感觉很麻烦,但是流程却十分的简单,主要是使用CAS Server的Cookie做校验,同时各自系统维护自己的Cookie。

  对于各自系统自己的Session,也可以依赖于SSO,这样就能保证所有的Session规则一致,便于集中控制。

  ticket通过302跳转跳转到CAS Client上,之后的流程就和站点1是一样的了。如果此时认证失败,那么需要重新走一次登录的过程。

  如果我们的站点有不止一个业务,那么他们可能部署在不同的机器上,也往往需要不同的域名进行区分。但是所有的业务又都是依赖于一套账户体系,那么我们这时候需要通过一次登录解决所有站点的登录问题,那么我们这个时候可以使用一个最笨的方法:那就是一次登录成功,将Cookie写到根域下,那么这样所有的站点就能实现,同一个根域下的Cookie共享,自然实现了”单点登录“。

  首先,我们有两个域名要实现单点登录,同时我们需要一个中间的Server。

  搞过前端的可能都知道用jsonp可以做跨域的请求,而我们解决的就是多个域下的统一登录的问题,好像很顺理成章的样子。但是,登录是Server端做的吧?我们在Client端做跨域的处理,这怎么看也不是很合理。同时这种办法需要很大的维护成本,每一次请求都要去固定的域下取相应的Cookie之后再做请求。想想维护有头疼。

  但是这种方式不是很灵活,对于数据传输的安全性没有保障,并且在销毁Cookie的时候无能为力,只能全部遍历的销毁。

  站点2,在进行登录时和站点1初次登录流程一致,但是在访问CAS Server的时候,由于当前浏览器已经有了CAS Server的Cookie,那么直接校验通过返回ticket。

本文链接:http://canfilmi.com/dandian/1027.html