`
lvjun106
  • 浏览: 429730 次
  • 性别: Icon_minigender_1
  • 来自: 芜湖
社区版块
存档分类
最新评论

跨域 Cookie 实现单点登录

    博客分类:
  • SSO
 
阅读更多

转:http://symphony.b3log.org/article/1407146861362

单点登录

单点登录(SSO - Single Sign On):对于同一个客户端(例如 Chrome 浏览器),只要登录了一个子站(例如 a.com),则所有子站(b.com、c.com)都认为已经登录。

比如用户在登录淘宝后,跳转到天猫时就已经登录了。

用例步骤

  1. 未登录用户访问子站 a.com 进行登录,自动跳转到账户中心的统一登录页 account.com/login
  2. 用户在统一登录页进行登录,登录成功后显示登录跳转页
  3. 显示登录跳转页后自动跳转回 a.com,单点登录完成
  4. 用户在访问 b.com 时无需再次登录

实现原理

登录

  1. 统一登录页登录请求完成后响应为登录跳转页
  2. 登录跳转页中通知各子站进行登录
    <scriptsrc='b.com/login?uid=xxxx&token=xxxxx'></script><scriptsrc='c.com/login?uid=xxxx&token=xxxxx'></script>
  3. 子站收到登录请求后验证 token 是否有效,有效的话在响应中设置 cookie(user_token=xxxx)

token 验证

  • 账户中心使用私钥加密 user id,生成 token
  • 子站使用公钥解密 token,将得到的 user id 和参数 uid 对比,如果一样就是校验通过

登出

  1. 用户在某个子站主动登出时跳转到账户中心统一登出页 account.com/logout?uid=xxxx&token=xxxx
  2. 账户中心验证 token 后进行登出,在登出跳转页中通知各子站进行登出(设置 cookie),类似登录通知
  3. 子站收到登出请求后验证 token 是否有效,有效的话在响应中设置 cookie(删除 user_token)

关键点

  • 浏览器渲染登录跳转页时将执行上面用 <script> 发送的登录通知请求,执行完后(或者超时)才跳转回前面登录的子站
  • 登录通知请求是跨域的(当前域是账户中心 account.com),所以在响应中设置 cookie 时 IE 某些版本需要设置 P3P 头
  • 在验证 token 时可以考虑使用账户中心提供高性能的验证接口,子站进行调用
分享到:
评论

相关推荐

    基于可变Cookie的跨域单点登录

    针对单点登录中的跨域身份认证问题,提出了一种基于可变Cookie的方案解决跨域单点登录,使用随机数字...通过对票据产生和传输以及Cookie加密和常见攻击的安全性分析,可以实现跨域单点登录的功能并保证身份认证安全可信。

    session、cookie的跨域共享

    该文件可以通过代码实例,让你清楚的理解session和cookie的意思,当你明白了这点,你就可以设计出来单点登录功能,同一账号在同一时间只能登录一次功能。同时你可以通过ie、firefox去测试你对session、cookie的理解...

    SSO单点登录【基于cookie二级域名下跨域共享】

    SSO单点登录【基于cookie二级域名下跨域共享】的简单实现。

    kisso单点登录

    kisso 采用的是加密会话 cookie 机制实现单点登录 SSO 服务,具备“无状态”、“分散验证” ... 3、cookie 轻松实现分布式服务部署,单点登录跨域访问等问题,换成 session 需要处理 session 复制及各种问题实现困难。

    单点登录系统的设计与实现方案.pdf

    单点登录系统的设计与实现⽅案 单点登录系统的设计与实现⽅案 ⽬的: 对⽬前已有的 Web 应⽤系统,和将来待开发的 Web 应⽤系统进⾏集成,实现单点登录。 要求: 1. 对已有的 Web 应⽤系统不作⼤规模改造。 2. 不...

    详解可跨域的单点登录(SSO)实现方案【附.net代码】

     单点登录是一种多站点共享登录访问授权机制,访问用户只需要在一个站点登录就可以访问其它站点需要登录访问的资源(url)。用户在任意一个站点注销登录,则其它站点的登录状态也被注销。简而言之就是:一处登录,...

    利用nginx解决cookie跨域访问的方法

    一、写在前面 最近需要把阿里云上的四台服务器的项目迁移到客户提供的新的项目中,原来的四台服务器中用到了一...因为每台服务器有两个项目,都用到单点登录,所以通过修改新的共享登录方式花费时间太多,于是在网上搜c

    SSO.doc解决单点登录

    、使用Cookie解决单点登录 技术点: 1、设置Cookie的路径为setPath("/") .即Tomcat的目录下都有效 2、设置Cookie的域setDomain(".itcast.com");即bbs.itcast.com,或是mail.itcast.com有效。即跨域。 3、设置Cookie...

    跨子域单点登录Demo

    跨子域单点登录。ASP.NET身份验证信息跨域共享状态,身份验证信息存储在cooKie中

    单点登录SSO-图示与讲解

    我严格对照所画时序图的每个步骤,开发了完整的跨域单点登录范例;2. 所有服务端步骤,都在代码中逐一标注,跟踪代码就能两相对照,实际的深入理解流程;3. SSO核心在写Cookie、URL传参策略,其参与对象多、逻辑...

    sso:运维云平台之单点登录系统(基于cookie)

    SSO单点登录系统运维云平台之单点登录系统,SSO的概念,用途和好处就没有这说明了,总之能接收好接单点登录的系统就可以接,二次开发成本高的系统如果支持LDAP就先接入LDAP,这样运维同学尽可能减少&gt;少应用系统账号...

    SSO CAS 单点登录实例SSOAuth+SSOWebDemo1+SSOWebDemo2.zip

    单点登录(Single Sign On),简称为 SSO,是目前比较流行的企业业务整合的解决方案之一。SSO的定义是在多个应用系统中,用户只需要登录一次就可以访问所有相互信任的应用系统。 较大的企业内部,一般都有很多的...

    xxl-sso:分布式单点登录框架。(分布式单点登录框架XXL-SSO)

    XXL-单点登录 XXL-SSO,一种分布式单点登录框架。 介绍 XXL-SSO是一个分布式单点登录框架。 您只需登录一次即可访问所有受信任的应用程序系统。 它具有“轻量级,可伸缩,分布式,跨域,Web + APP支持访问”功能。 ...

    支持多模式应用的单点登录方案 (2009年)

    以往的单点登录方案仅支持C/S(客户机/...客户端则采用安全Cookie、共享内存与ticket技术实现跨域单点登录. 结果表明,该方案具有更高的安全性,更为全面的解决多模式应用的单点登录问题,因而具有广泛的应用前景.

    开源的分布式单点登录框架

    这是一个分布式单点登录框架。只需要登录一次就可以访问所有相互信任的应用系统。 拥有"轻量级、分布式、跨域、Cookie+Token均支持、Web+APP均支持"等特性。现已开放源代码,开箱即用。

    二级域名或跨域共享Cookies的实现方法

    适用于Asp。 在主域名设置的Cookie,在各子域名共用;适用于博客等提供二级域名。这个问题,以网上有众多帖子,可惜都没有完整解决。

    项目实战:SSO单点登录方案

    本套视频,详解讲解了两套SSO解决方案. 1、基于Cookie跨域特性,实现SSO方案 2、使用第三方框架CAS,实现SSO方案

    xxl-sso-master.zip

    一个分布式单点登录框架。只需要登录一次就可以访问所有相互信任的应用系统。 拥有"轻量级、分布式、跨域、Cookie+Token均支持、Web+APP均支持"等特性;。现已开放源代码,开箱即用

Global site tag (gtag.js) - Google Analytics