SSO 单点登录:一次登录,处处登录。

只需在一个登录认证服务下进行登录后,就可访问所有相互信任的应用

  • 同域 SSO

1. session-cookie机制:服务端通过cookie认证客户端。

  用户第一次登录后,服务端将返回一个cookie给客户端(这个cookie包含session id),用户下一次发起请求将在header带上这个cookie,服务端将能识别是哪一个客户端。

/**
* 完全同域
* cookie 是端口无关的
*/
Cookie cookie = new Cookie("sso","ssoCookie");
cookie.setDomain("www.xxx.com");      //设置该cookie域,则在该域下的请求将带上该cookie
cookie.setPath("/");    //该域下的所有路径的请求都使用该cookie
response.addCookie(cookie);
/**
* 同父域
 *  cookie 是端口无关的
 */
Cookie cookie = new Cookie("sso","ssoCookie");  
cookie.setDomain(".xxx.com");
cookie.setPath("/");
response.addCookie(cookie);

    2. spring-session 共享: 解决同域下 集群  session共享的问题。(当服务端为集群而不是单点的时候,需要集群服务器间session共享才能实现session-cookie机制的同域SSO)

        实现方式:通过过滤器拦击请求,获取session数据保存到数据库(session持久化);需要获取session数据将统一从数据库获取。

  • 跨域 SSO

    1. session跨域: 同样是通过cookie认证客户端。

      cookie共享: 将所有信任域的cookie设置为相同的值,这样在不同域下发起的请求携带的cookie将会是一样的。

/**
* 同父域
* cookie 是端口无关的
*/
Cookie cookie = new Cookie("sso","ssoCookie");
cookie.setDomain(getDomainName(request));  // 将信任的域的cookie设置为相同的值,这样在不同域下登录使用的cookie将会是一样的,可以通过cookie校验
cookie.setDomain("/");
response.addCookie(cookie);

    2. Token身份认证

      服务端不需要记录session数据,用户登录后服务端将返回一个Token给客户端,客户端将这个Token保存起来;在下一次请求中将在header带上该Token,如果通过服务端校验,将能得到正确响应。

006. SSO 单点登录(同域SSO/跨域SSO)的更多相关文章

  1. [精华][推荐]CAS SSO 单点登录框架学习 环境搭建

    1.了解单点登录  SSO 主要特点是: SSO 应用之间使用 Web 协议(如 HTTPS) ,并且只有一个登录入口. SSO 的体系中有下面三种角色: 1) User(多个) 2) Web 应用( ...

  2. CAS SSO单点登录框架学习

    1.了解单点登录  SSO 主要特点是: SSO 应用之间使用 Web 协议(如 HTTPS) ,并且只有一个登录入口. SSO 的体系中有下面三种角色: 1) User(多个) 2) Web 应用( ...

  3. CAS SSO单点登录框架介绍

    1.了解单点登录  SSO 主要特点是: SSO 应用之间使用 Web 协议(如 HTTPS) ,并且只有一个登录入口. SSO 的体系中有下面三种角色: 1) User(多个) 2) Web 应用( ...

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

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

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

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

  6. [精华][推荐]CAS SSO单点登录服务端客户端实例

    1.修改server.xml文件,如下: 注意: 这里使用的是https的认证方式,需要将这个配置放开,并做如下修改: <Connector port="8443" prot ...

  7. 偷懒小工具 - SSO单点登录通用类(可跨域)

    写在前面的话 上次发布过一篇同样标题的文章.但是因为跨域方面做得不太理想.我进行了修改,并重新分享给大家. 如果这篇文章对您有所帮助,请您点击一下推荐.以便有动力分享出更多的"偷懒小工具&q ...

  8. SSO单点登录之跨域问题

    第一次写博客,与大家共勉. 这里用到的原理其实非常简单,将cookie存在一个公共的站点的页面上就可以了,这里我们管那个站点叫主站S. 先说说所谓的跨域 环境1:a.xxx.com需要跟b.xxx.c ...

  9. SSO单点登录、跨域重定向、跨域设置Cookie、京东单点登录实例分析

    最近在研究SSO单点登录技术,其中有一种就是通过js的跨域设置cookie来达到单点登录目的的,下面就已京东商城为例来解释下跨域设置cookie的过程 涉及的关键知识点: 1.jquery ajax跨 ...

随机推荐

  1. Android Gradle基于参数化配置实现差异化构建

    一.背景: 项目中有一些特殊的需求,如个别渠道集成腾讯bugly,个别渠道集成易观统计,不同的渠道集成不同的推送策略(如Oppo渠道优先Opush推送),不同的渠道拥有不同的第三方登录集成等等.这些需 ...

  2. [dotnet] 封装一个同时支持密码/安全密钥认证的SFTP下载器,简单易用。

    前言 最近在开发订单对账系统,先从各种支付平台获取订单销售数据,然后与公司商城订单数据进行对账兜底.总体上,各个支付平台提供数据的方式分为两类,一般以接口的方式提供实时数据,比如:webservice ...

  3. 【STM32H7教程】第9章 STM32H7重要知识点数据类型,变量和堆栈

    完整教程下载地址:http://forum.armfly.com/forum.php?mod=viewthread&tid=86980 第9章   STM32H7重要知识点数据类型,变量和堆栈 ...

  4. Mysql存储过程历史表备份

    应用背景 SCADA采集系统需要将实时数据存入历史表.问题1:如何更简单的添加历史数据?2.海量历史数据,比如年数据,如何快速筛选 画曲线? 利用mysql的事件,每小时存一次采集数据: 每月备份历史 ...

  5. 频率学派与贝叶斯学派(先验分布与后验分布,MLE和MAP)

    频率学派(古典学派)和贝叶斯学派是数理统计领域的两大流派. 这两大流派对世界的认知有本质的不同:频率学派认为世界是确定的,有一个本体,这个本体的真值是不变的,我们的目标就是要找到这个真值或真值所在的范 ...

  6. python中的shutil模块

    目录 python中的shutil模块 目录和文件操作 归档操作 python中的shutil模块 shutil模块对文件和文件集合提供了许多高级操作,特别是提供了支持文件复制和删除的函数. 目录和文 ...

  7. 如何在ASP.NET Core中使用Azure Service Bus Queue

    原文:USING AZURE SERVICE BUS QUEUES WITH ASP.NET CORE SERVICES 作者:damienbod 译文:如何在ASP.NET Core中使用Azure ...

  8. 老司机心得之时间管理"入坑"

    长期以来,时间管理一直被认为是自我管理,团队管理,项目管理的既关键又基础的手段,就连笔者本人也一直在崇尚时间管理的理念. 但是这里要讲的,不是什么鬼神方法论.而主要是对长时间以来学习和实践时间管理的一 ...

  9. css中的position(定位)

    一.position语法与结构 position语法: position : static absolute relative position参数:static : 无特殊定位,对象遵循HTML定位 ...

  10. Android8.0通知

    android里面经常会使用Notification来显示通知的消息,一般使用NotificationManager来创建通知消息 NotificationManager manger = (Noti ...