一、什么是单点登录SSO(Single Sign-On)

SSO是一种统一认证和授权机制,指访问同一服务器不同应用中的受保护资源的同一用户,只需要登录一次,即通过一个应用中的安全验证后,再访问其他应用中的受保护资源时,不再需要重新登录验证。

二、单点登录解决了什么问题

  解决了用户只需要登录一次就可以访问所有相互信任的应用系统,而不用重复登录。

例如CSDN中的论坛应用,博客应用,下载应用模块。我们只要在CSDN中访问任何一个子应用后,再访问其他应用站点的时候就不需要在进行登录。

三、在公司里面也通过.NET,进行了SSO的开发。在网上看过不少的SSO实现方法。总结在实际项目开发中的一些开发体会。先看下面的流程图:

 一.用户第一次访问站点。

1. 用户第一次访问>www.a.com ,这个时候该站点下没有记录之前登录的Cookie,

2. 所有在发现没有用户登录的情况下>跳转到了Login 页面。

3. 用户现在输入用户名,密码登录,请求SSO登录API,登录成功,在Redis里面缓存一条Key=SessioID,Values=UserInfo这样一条记录,缓存时间可配置。Response 返回登录验证状态,和用户信息。

4. 用户登录成功,记录下凭证,即此刻的SessionID写入Cookie.然后跳转到www.a.com

5. 这个时候有了Cookie,将记录的Cookie,也就是SessioID请求SSO验证Token接口,因为登录成功记录了Key=SessionID,所有可以获取到Values=即用户信息,Response 返回用户信息。

6.
用户现在去访问www.B.com站点,B站点无Cookie,这里SessionID还是当前会话的SessionID,所有区请求SSO主站点验证
Token接口,发现存在Key=SessionID,返回登录状态成功,用户信息。在B站点下记录Cookie 即token 配置。

这样用户第一次访问A站点,从第一次登录,到访问其他站点的流程就走完了。

 二.用户中途关闭浏览器,然后打开浏览器,访问B站点:

1. 发现存在Cookie, 即Token凭证,去SSO主站的,验证发现存在Key=SessioID,获取Values将UserIno返回给用户,返回用户任在登录状态。这样访问应用之前访问过的站点依旧在登录状态。

2. 如果用户在执行访问第二个应用,这时候Redis缓存的登录状态过期,则返回验证凭证失败。这时候第二个应用跳转到登录状态,走用户登录的流程以及后续验证流程。

注意记录Cookie的过期时间应该保证与Redis的过期时间一致性,不能在Redis缓存的过期时间之后过期,这样在用户此时访问第一个应用站
点的时候,发现Cookie不存在,就会通过SessionID去验证凭证,发现这时候是过期后重新登陆,会将此时的登陆状态写入Cookie.

  三.登出

只需要清除本地Cookie,调用SSO站点接口清除登陆缓存的状态即可实现登出。

 四.注意:

在实际的项目开发中会遇到各种情况,比如子站点和SSO主站点的接口调用参数约束,签名,加密等。以及纯html站点的实现SSO登录接口,或者
纯.NET应用网站的跳转接口,这些都要区别开来。只有在详细了解SSO实现单点登录的原理之后进行开发才能做到事半功倍的效果。

工欲善其事必先利其器 。

SSO单点登录实现原理与总结的更多相关文章

  1. SSO单点登录实现原理

    SSO单点登录实现原理 只是简要介绍下基于java的实现过程,不提供完整源码,明白了原理,我相信你们可以自己实现.sso采用客户端/服务端架构,我们先看sso-client与sso-server要实现 ...

  2. sso单点登录系统原理与实现

    sso单点登录 1.认识并理解sso及其应用,并能根据其实现原理自行实现sso 没有使用sso单点登录的系统用户再访问同一个系统的不同模块都必须的登录 使用sso单点登录,用户只需要登录一次,并且可以 ...

  3. SSO(单点登录)与旅游年卡

    SSO(单点登录)与旅游年卡 SSO英文全称Single Sign On,单点登录.SSO是在多个应用系统中,用户只需要登录一次就可以访问所有相互信任的应用系统.它包括可以将这次主要的登录映射到其他应 ...

  4. CAS实现SSO单点登录原理

    1.      CAS 简介 1.1.  What is CAS ? CAS ( Central Authentication Service ) 是 Yale 大学发起的一个企业级的.开源的项目,旨 ...

  5. php sso单点登录原理阐述

    原理:就是用户登录了单点登录系统(sso)之后,就可以免登录形式进入相关系统: 实现: 点击登录跳转到SSO登录页面并带上当前应用的callback地址 登录成功后生成COOKIE并将COOKIE传给 ...

  6. CAS实现SSO单点登录原理(转)

    1.      CAS 简介 1.1.  What is CAS ? CAS ( Central Authentication Service ) 是 Yale 大学发起的一个企业级的.开源的项目,旨 ...

  7. 转 CAS实现SSO单点登录原理

    原文链接   http://m.blog.csdn.net/hxpjava1/article/details/74019017 CAS 简介 1. 1.1.  What is CAS ? CAS (  ...

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

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

  9. 一篇文章彻底弄懂CAS实现SSO单点登录原理

    1. CAS 简介 1.1. What is CAS ? CAS ( Central Authentication Service ) 是 Yale 大学发起的一个企业级的.开源的项目,旨在为 Web ...

随机推荐

  1. Redis学习笔记~分布式的Pub/Sub模式

    回到目录 redis的客户端有很多,这次用它的pub/sub发布与订阅我选择了StackExchange.Redis,发布与订阅大家应该很清楚了,首先一个订阅者,订阅一个服务,服务执行一些处理程序(可 ...

  2. DDD~领域事件中使用分布式事务

    回到目录 对于一个聚合来说,它可能会被附加很多事件,这里我们叫它领域事务,因为一个聚会我们可以把它理解成一个领域,一个业务.对于领域事件不清楚的同学可以看看我的这篇文章<DDD~领域事件与事件总 ...

  3. 一张纸的厚度大约是0.08mm,对折多少次之后能达到珠穆朗玛峰的高度(8848.13米)?

  4. 批处理集锦——(4)2>nul和1>nul是什么意思?

    >nul 是屏蔽操作成功显示的信息,但是出错还是会显示(即1>nul) 2>nul 是屏蔽操作失败显示的信息,如果成功依旧显示. >nul 2>nul 就是正确的错误的一 ...

  5. Java Management extentsions(jmx)与tomcat

    1,概念:一个可以使用JMX管理器来管理的Java对象称为JMX管理资源(JMX manageable resource).事实上,一个JMX管理资源也可以是一个应用程序.一个实现或者一个服务.设备. ...

  6. 每日学习总结<一> 2015-8-31

      Java : 抽象类的简单概念和意义: 包名:域名相反.例: com.eric.test; 访问权限: (public/default/private/protected) public: 可以修 ...

  7. Sass细节一变量

    同步发布在个人站 变量 局部变量和全局变量的定义 Sass的变量是用$申明的,有局部变量(选择器内部的变量)和全局变量(不在任何选择器内的变量).例如: //这里$width就是全局变量 $width ...

  8. idea快捷键总结

    使用好快捷键会快很多,这里我慢慢添加我用习惯的快捷键.参考 1.alt+enter 这个几乎万能,有错误提示的时候将光标移动到错误处,然后alt+enter,会给出建议方案:写完一个表达式后,alt+ ...

  9. java中复制对象通过反射或序列化

    在使用缓存读取数据后修改发现缓存被修改.于是找了下复制对象的方法. 关于对象克隆 按我的理解,对象是包含引用+数据.通常变量复制都是将引用传递过去.比如: Person p1 = new Person ...

  10. [logstash-input-http] 插件使用详解

    插件介绍 Http插件是2.0版本才出现的新插件,1.x是没有这个插件的.这个插件可以帮助logstash接收其他主机或者本机发送的http报文. 插件的原理很简单,它自己启动了一个ruby的服务器, ...