偷懒小工具 - SSO单点登录通用类(可跨域)

写在前面的话

上次发布过一篇同样标题的文章。但是因为跨域方面做得不太理想。我进行了修改,并重新分享给大家。

如果这篇文章对您有所帮助,请您点击一下推荐。以便有动力分享出更多的“偷懒小工具”

目的 

目的很明确,就是搭建单点登录的帮助类,并且是一贯的极简风格(调用方法保持5行以内)。

并且与其他类库,关联性降低。所以,不使用WebAPI或者WebService等。

思路

因为上次有朋友说,光看见一堆代码,看不见具体思路。所以,这次分享,我把思路先写出来。

懒得看实现代码的朋友,可直接查看“思路”这个子标题。

同时如果有好的想法,请修改后在github上推给我。Talk is cheap,Show me the code

思路

同域

同域需要考虑的问题比较少。只需要考虑,MVC和WebForm的Request如何获取即可。

实现流程图如下

1. 因为是使用同样的Cookie所以名称和加密方式必须一致。

2. 需要设置登录成功后,回跳的网址。因为Forms身份认证的ReturnURL不能获得请求原网址。

3. 剩下的就如图所示了。不明白的可以追问,我就不细说了。

跨域

跨域除了需要考虑同域的问题外,还需要考虑状态共享。因为同源策略问题,故此使用JSONP

1. 因为不是Cookie共享,所以只需要设置相同的加密方法即可。

2. 需要在认证网站,添加可登录的其他网站集合,使用逗号分隔。

3. 需要在其他网站,创建一个Login页面并调用帮助类的验证方法。配置认证网站URL。

4. 当认证网站登录成功后,会根据配置的其他网站,给他们发送JSONP请求,让他们自动登录。

5. 注销同理。JSONP请求方式,可参考这篇文章:jsonp详解。使用的就是添加js标签的方式。

至此,思路说明结束。不明白的可以追问。

网友评论