深入浅出单点登录---1、什么是单点登录-灵析社区

提笔写架构

什么是单点登录

随着互联网大数据不断发展,应用服务的不断增多,单点登录越来越能够凸显其作用。单点登录 SSO(Single Sign On),顾名思义就是单个节点登录,全局使用。是目前最为流行的统一登录解决方案。

为什么使用

目的就是为了快速实现用户认证,统一管理用户信息, 避免重复维护用户数据; 分离用户与业务数据,让业务 服务专注于业务功能的实现,让用户中心服务统一认证,减少频繁认证次数, 同时保障数据的安全性。

应用场景

  • 内部的服务统一认证与授权,比如电商网站, 内部的用户服务、订单服务、库存服务、资金服务等,以 用户服务作为认证服务中心, 实现统一认证与授权。
  • 外部的第三方登录认证与授权,比如登录某个论坛网站, 可以采用FaceBook或者Google账号进行登录。
  • 云服务应用,比如使用阿里云的消息推送服务,但不想创建和管理用户,就可以采用基于SAML协议实现 SSO单点登录。

淘宝天猫登录场景解析

访问淘宝网站, 登录之后, 再访问天猫网站, 你会发现, 天猫也是处于登录状态,那么具体是如何实现的?

登录技术方案分析

淘宝登录:

天猫登录:

目前整个登录体系是以淘宝作为中心,天猫通过淘宝作鉴权登录。整个鉴权体系是采用跨域cookie + 分布式 session作为解决方案:

淘宝是如何解决Cookie跨域问题,目前淘宝是采用如下方案做处理:

通过内嵌iframe,访问统一域名,实现Cookie信息共享,如果禁用Cookie,你会发现无法正常登录;同时利用静态资源不受同源策略的限制,通过JSONP跨域方式来获取用户的登录状态。

Response会返回Token信息:

var userCookie= {dnk:'',_nk_:'',_l_g_:'',ck1:'',tracknick:'',mt:'ci=0_0',l:'eBMMyMa4QmFJBq7pBO5aourza77T3Id b4sPzaNbMiInca6BPO3JuhNQqw5H95dtjgtC3xetzm21B9dLHR3fRwxDDBTJbWMu‐ exvO.',uc1:'',t:'aa749f01717bd2e29ccacc35701ebef7',unb:'',cna:'y4PeFr/mbEoCAXQZX0Z2u8bq',_t b_token_:'e6163b18b5154',version:'4.0.0'};window.TB && TB.Global && TB.Global.run && TB.Global.run();

淘宝是如何解决分布式Session管理问题呢? 为了解决此问题,淘宝专门推出两个重要产品: 第一个是tbsession, 基于Tair缓存体系实现的共享Session; 另一个是passcookie,解决不同域名之间Cookie 同步的问题,上述的登录鉴权Cookie信息就是通过passcookie实现的统一管理。 淘宝是如何防范Session劫持?

CSRF/XSRF 攻击的原理,就是利用浏览器对嵌入资源不做限制的行为进行跨站请求伪造攻击, 比如

SSO登录架构设计

SSO登录实现流程解析

  1. 用户进入淘宝登录页面,调用地址: https://login.taobao.com/newlogin/login.do
  2. 调用成功之后,同步Cookie,保存Token认证信息。

3. 访问天猫网站,从Cookie里面拿取Token信息,采用jsonp方式,获取淘宝的登录状态:

4. 如果不是从淘宝登录, 由天猫发起登录,会请求至淘宝登录页面, 登录完成之后写入Cookie信息, 再返 回至天猫网站。

阅读量:2024

点赞量:0

收藏量:0