点单登录 (一)

首先初步了解什么是单点登录,单点登录的技术难点和各种方案,以及各自存在的问题

百度百科:SSO的定义是在多个应用系统中,用户只需要登录一次就可以访问所有相互信任的应用系统。

主要功能:

     共同的认证系统

     所有系统提取,使用认证标识,cookie或其他ticket

最简单的实践方式:

以cookie机制实现。单个域名实现登录,在登录认证成功后,会设置一个cookie保存在浏览器中,之后的请求带着这个cookie,服务器通过获取cookie中的sessionid来校验是否登录过。如果在浏览器打开另一个域名的时候,也需要用户登录,而cookie是不可以跨域的。但是在顶级域名下www.antfoot.dev,的子域名sso1.antfoot.dev,sso2.antfoot.dev是可以共享cookie的

同域名,同服务器下不同子域名实现单点登录

代码1

子域名1,测试脚本
子域名2测试脚本

浏览器测试结果

主域名下创建session文件
子域名1,给seesion文件中添加一个值,并输出所有
子域名2,拿到所有session内容

同域名下,子域名之间可以共享cookie,所有可以通过其中任何一个域名作为认证系统(主域名),那么其他系统就可以通过带着cookie发送请求到服务器,无需再次登录操作即可通过认证。

如果是同域名,不同服务器,不同子域名,那么将session信息存在可以共享的redis或数据库中,以满足统一的认证系统条件

但是,如果是不同域名下,这种简单的实现方案就不可用了,因为cookie是不可跨域的。

对于不同域名,需要一个认证域名,所有请求在程序内重定向到这个认证域名下,认证成功后,设置认证域名下一个cookie,其他域名请求时,先从定向到此认证域名,检索cookie,如果成功,则返回到最终的请求并带上一个认证成功的token,该域名就可以通过这个token记录其登录状态

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容