点单登录 (一)

作者: AntFoot | 来源:发表于2017-01-15 23:40 被阅读147次

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

    百度百科: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记录其登录状态

    相关文章

      网友评论

        本文标题:点单登录 (一)

        本文链接:https://www.haomeiwen.com/subject/wgfubttx.html