一家公司有多个产品线,就可能要有多个子域名,下头以baidu域名为例,a.baidu.com, b.baidu.com。com 是顶级域名,baidu 就是一个二级域名,a和b就是子域名。

当用户在a产品线上登录了系统,此时切换到b产品,为了增加用户体验,不必再让用户登录一次b。所以单点登录就出来了。

  一般的实现就是增加一个passport.baidu.com,专门搞登录的中控服务。

  当用户第一次登录 baidu域下,比如a产品。此时先跳转到passport下进行登录,登录成功以后,passport生成一个token,在session服务中插入登录信息,同时也将其种在cookie里,就放在 .baidu.com域下,当然这个token会和session中的登录信息有联系。

当用户登录b产品线时,检测cookie下这个token在passport的session服务中是否存在,如果存在就认为该用户已经登录过在线状态。

  还有一种需要面对的情况,比如公司还有一个二级域名,举例 hao123.com,这下二级域名不一样了。跨域了,cookie就不能被passport直接拿到了。这怎么办呢?

  可以这样处理,当用户第一次在passport下登录时,生成的这个token,  在passport下跨域去请求 hao123.com,让 hao123.com服务去把这个token种在自己域下cookie里。当用户登录成功 a产品以后,随后去访问了 hao123.com, hao123.com 域下的token被passport的session服务检测,发现ok,就返回给 hao123.com帐号信息。

  以上的实现很容易当然也很粗糙,比如某一个产品线下用户的cookie被盗了,这个token被人用了,这个人就可以随意使用你的帐号在xxx下所有产品线浏览。

  这就需要更安全的机制。各个产品线也有各自的token生成。

  可以用浏览器观察下登录百度passport的现象:

  chrome浏览器登录(在登录passport时,勾选保存log,避免请求日志刷新没了。搜索hao123关键字)。

  发现这个跨域请求是利用图片的src属性,请求hao123站点。把加密的token发到hao123,hao123响应,setcookie把token放到hao123域下。(这里说的token即是百度的bduss)。

  

浅析单点登录,以及不同二级域名下的SSO实现的更多相关文章

  1. 单点登录之ajax跨域实现

    需求:相同根域名或不同根域名的两个域名,实现单点登录登出 原理: 以b站为例,b站的账号登录域名为passport.bilibili.com.主站为www.bilibili.com,游戏站为www.b ...

  2. 基于CAS的SSO单点登录-实现ajax跨域访问的自动登录(也相当于超时重连)

    先补课,以下网址可以把CAS环境搭起来. [JA-SIG CAS服务环境搭建]http://linliangyi2007.iteye.com/blog/165307 [JA-SIG CAS业务架构介绍 ...

  3. 单点登录 关于Cookie跨域的问题

    public void ProcessRequest(HttpContext context) { HttpCookie cookie = new HttpCookie("name" ...

  4. 跨域分布式系统单点登录的实现(CAS单点登录)

    1. 概述 上一次我们聊了一下<使用Redis实现分布式会话>,原理就是使用 客户端Cookie + Redis 的方式来验证用户是否登录. 如果分布式系统中,只是对Tomcat做了负载均 ...

  5. cookie跨域,跨目录访问及单点登录。

    首先普及下域名的知识: 域名: baidu.com    // 一级域名  A play.baidu.com  //  二级域名 B abc.play.baidu.com // 三级域名  C 数有几 ...

  6. SSO单点登录的发展由来以及实现原理

    单点登录以及权限,在很早之前都有写过,不过都比较简单,今天就具体说一下,以及下一步要做的 1.web单系统应用 早期我们开发web应用都是所有的包放在一起打成一个war包放入tomcat容器来运行的, ...

  7. SSO单点登录的发展由来以及实现原理【转】

    单点登录以及权限,在很早之前都有写过,不过都比较简单,今天就具体说一下,以及下一步要做的 1.web单系统应用 早期我们开发web应用都是所有的包放在一起打成一个war包放入tomcat容器来运行的, ...

  8. 单点登录之CAS原理和实现(转载)

    转载源:https://www.jianshu.com/p/613c615b7ef1 单点登录之CAS原理和实现 来源于作者刘欣的<码农翻身> + 自己的备注理解 这家集团公司财大气粗,竟 ...

  9. 使用 JSONP 实现简单的 SSO 单点登录

    SSO 即 Single Sign On(单点登录).  一.二级域名之间的单点登录 不需要用到JSONP 或者 p3p 协议,直接使用 COOKIE 就行了,因为顶级域名相同就能实现 COOKIE ...

随机推荐

  1. 对GIL的一些理解

    GIL:全局解释器锁 GIL设计理念与限制: python的代码执行由python虚拟机(也叫解释器主循环,CPython版本)来控制,python在设计之初就考虑到在解释器的主循环中,同时只有一个线 ...

  2. html标签必备

    常用快捷键 Ctrl+c 复制 Ctrl+v 粘贴 Ctrl+x 剪切 Ctrl+a 全选 Ctrl+s 保存 Ctrl+z 撤销一步 Windows+d 返回桌面 Windows+e 我的电脑 Wi ...

  3. IDEA项目搭建十二——站点用户登录会话实现

    一.简介 前两天写了一篇用户登录会话设计的脑图,这次就把这个引入到项目中实现,总体来说需要几步先罗列一下: 1.需要一个Cookie工具类用于读写cookie 2.需要一个Cache工具类用于在服务端 ...

  4. SuperMap 三维产品资料一览表

    转自:http://blog.csdn.net/supermapsupport/article/details/68924713 如何能快速地开发项目中的三维功能呢?本文为您提供全方位的三维资料,为您 ...

  5. Ansible--常用模块使用

    ansible命令解释 通过ansible命令执⾏的任务称为ad-hoc命令(任务),其实它是相对playbook⽽⾔的.通常,命令⾏⽤来实现ansible的批量管理功能,playbook⽤来实现批量 ...

  6. Expo大作战(三十四)--expo sdk api之LinearGradient(线性渐变),KeepAwake(保持屏幕不休眠),IntentLauncherAndroid,Gyroscope,

    简要:本系列文章讲会对expo进行全面的介绍,本人从2017年6月份接触expo以来,对expo的研究断断续续,一路走来将近10个月,废话不多说,接下来你看到内容,讲全部来与官网 我猜去全部机翻+个人 ...

  7. JMeter—配置元件(七)

    参考<全栈性能测试修炼宝典JMeter实战>第六章 JMeter 元件详解中第二节配置元件JMeter配置元件可以用来初始化默认值和变量,以便后续采样器使用.将在其作用域的初始化阶段处理. ...

  8. python第五十二天---第九周作业 类 Fabric 主机管理程序

    类 Fabric 主机管理程序开发:1. 运行程序列出主机组或者主机列表2. 选择指定主机或主机组3. 选择让主机或者主机组执行命令或者向其传输文件(上传/下载)4. 充分使用多线程或多进程5. 不同 ...

  9. MySQL崩溃恢复与组提交

      Ⅰ.binlog与redo的一致性(原子) 由内部分布式事务保证 我们先来了解下,当一个commit敲下后,内部会发生什么? 步骤 操作 step1 InnoDB做prepare redo log ...

  10. win7计划任务报该任务映像己损坏或己篡改

    目录 win7计划任务报该任务映像己损坏或己篡改 前言 解决方案 排查损坏的计划任务映像 win7计划任务报该任务映像己损坏或己篡改 文:铁乐与猫 2018-9-20 前言 win7下想自定义一些计划 ...