SSO 方案演进

1

背景介绍       

随着业务与技术的发展,现今比以往任何时候都更需要单点登录 SSO 身份验证。

现在几乎每个网站都需要某种形式的身份验证才能访问其功能和内容。

随着网站和服务数量的增加,集中登录系统已成为一种必要。

在本文中,我们将讨论下 SSO 身份验证的方案演进。

2

问题描述       

开发团队迟早会面临一个问题,已经开发了 网站 A,新开发的 网站 B 希望使用 网站 A 的登录信息,而不是使用一套新的登录信息,如下图所示:

dfce0642ae517164d5916cdeec81476e.png

事实上,你可能还希望已经在 网站 A 登录的用户自动完成 网站 B 的登录。

问题的解决方案显然是实现跨不同域之间共享会话信息。

但是,由于安全原因,浏览器会强制执行同源策略 - Same Origin Policy。

该策略规定,Cookies 只能由其创建者访问。

换句话说,如果 网站 A 和 网站 B 不是同域,网站 B 无法访问 网站 A 的 Cookies,反之亦然,如下图所示:

bc7f6bb935a7beab39fda74cb2ad5b6a.png

SSO 其实就是要以某种方式解决不同域之间共享会话信息。

3

解决方案       

一、同源解决方案

要解决不同域之间共享会话信息,一个最简单粗暴的办法就是让网站同域,如下图所示:

e52362ffef72857d2da56a6bf4961c4c.png

1. 用户浏览 网站 A

2. 网站 A 发现无 *.domain.com 的 Cookies,重定向到认证中心

3. 认证中心要求用户使用账号密码登录

4. 认证中心保存 Cookies 到 *.domain.com

5. 重定向返回 网站 A

6. 网站 A 读取 *.domain.com 下的 Cookies 完成校验,展示网站内容

7. 用户浏览 网站 B

8. 网站 B 读取 *.domain.com 下的 Cookies 完成校验,展示网站内容


二、非同源解决方案

同源的解决方案可以满足大部分场景,但是针对一些多产品的场景,比如,阿里巴巴有天猫和淘宝两个产品,同源解决方案显然不能满足需求。

不同的 SSO 协议以不同的方式共享会话信息,但基本概念是相同的:有一个认证中心,执行身份验证,然后以某种方式与其他域共享会话信息。

其中一种方式是使用 JWT - JSON Web Token,认证中心使用 JWE - JSON Web Encryption 对用户信息进行加密,生成 JWT。

然后通过重定向的方式,把 Token 传回原始站点,Token 包含需要验证用户所需的所有信息。

由于 Token 是使用 JWT 加密的,除了认证中心外无法以任何方式修改它,具体流程如下:

091d3319188f30954511da189c8f9b87.png

1. 用户浏览 网站 A

2. 网站 A 发现无 domain1.com 的 Cookies,重定向到认证中心

3. 认证中心要求用户使用账号密码登录

4. 认证中心保存 Cookies 到 auth.com

5. 重定向返回 网站 A 并在 URL 携带验证用户信息的 Token

6. 网站 A 校验 Token 完成验证

7. 网站 A 保存 Cookies 到 domain1.com,供后续验证使用,并显示网站内容

8. 用户浏览 网站 B

9. 网站 B 发现无 domain2.com 的 Cookies,重定向到认证中心

10. 认证中心发现有 auth.com 的 Cookies,对 Cookies 进行校验

11. 重定向返回 网站 B 并在 URL 携带验证用户信息的 Token

12. 网站 B 校验 Token 完成验证

13. 网站 B 保存 Cookies 到 domain2.com,供后续验证使用,并显示网站内容

4

总结归纳       

以上就是本文需要介绍的 SSO 相关内容,大家有问题的话欢迎在文章或者在公众号 - 跬步之巅留言交流。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/287626.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【计算机图形学】实验:VB.net环境下的图形裁剪完整实验操作流程

一、实验目的: 熟练掌握在.net环境下对图形的裁剪。 二、实验准备: 学习图形裁剪的基本算法,以及在.net环境下裁剪图形的基本方法。 三、实验内容: 在.net环境中利用裁剪图形的基本方法对任意图形进行裁剪。

UI之常用通过颜色值和透明度怎么得到最后的颜色值

1 、问题 UI给了颜色#000000,透明度是75%,我需要最终的颜色值。 2 、透明度色值表 00%FF(不透明) 5%F2 10%E5 15%D8 20%CC 25%BF 30%B2 35%A5 40%99 45%8c 50%7F 55%72 60%66 65%59 70%4c 75%3F 80%33 85%21 90%19 95%0c 100%00…

《零基础看得懂的C++入门教程 》——(8)搞定二维数组与循环嵌套

一、学习目标 了解二维数组的使用方法了解循环嵌套的使用方法 目录 预备第一篇,使用软件介绍在这一篇,C与C使用的软件是一样的,查看这篇即可:《软件介绍》 想了解编译原理和学习方法点这篇,学习方法和一些原理C与C都…

mybatis模糊查询不同写法

工作中用到,写三种用法吧,第四种为大小写匹配查询 1. sql中字符串拼接 SELECT * FROM tableName WHERE name LIKE CONCAT(CONCAT(%, #{text}), %); 2. 使用 ${...} 代替 #{...} SELECT * FROM tableName WHERE name LIKE %${text}%; 3. 程序中拼接 Java …

常见的Ubuntu命令30条(一)

Ubuntu命令是指在Ubuntu操作系统中用于执行各种任务和操作的命令行指令。这些命令可以用于管理系统、配置网络、安装软件、浏览文件等。Ubuntu命令通常在终端(Terminal)应用程序中输入并执行。 在Ubuntu中,有许多常用的命令和指令。以下是一…

【计算机图形学】实验:C#.net环境下的图形变换完整实验操作流程

一、实验目的: 熟练掌握在.net环境下对图形的变换方法。 二、实验准备: 学习图形变换的基本算法,如平移、旋转、缩放等,以及在.net环境下变换图形的基本方法。 三、实验内容: 在.net环境中利用变换图形的基本方法对图形进行变换,包括平移、旋转、缩放、对称、复合变…

Android之给ImageView添加点击效果

1 问题 给ImageView添加点击效果 2 解决办法 1&#xff09;、新建selector.xml文件 <?xml version"1.0" encoding"utf-8"?> <selector xmlns:android"http://schemas.android.com/apk/res/android"><item android:drawable&…

python基础知识纵览(下)

python函数 1.函数作用 最大化代码重用和最小化代码冗余流程的分解2.函数基本概念 def创建对象并赋值给某一变量## 创建一个函数对象并赋值给fn_namedef fn_name(args1,args2,...,argsN): <statements>复制代码def是可执行的代码## 通过if语句判断来做定义函数,def是实…

《零基础看得懂的C++入门教程 》——(9)结构体原来如此

一、学习目标 了解C语言的结构体的使用方法了解C语言结构体的结构的赋值了解多种C语言结构体变量的赋值方法和取值方法 目录 预备第一篇&#xff0c;使用软件介绍在这一篇&#xff0c;C与C使用的软件是一样的&#xff0c;查看这篇即可&#xff1a;《软件介绍》 想了解编译原…

微信小程序python token验证_微信小程序python 用户认证

按流程图来先通过wx.login()获取code,再通过我们后台配置的接口获取openid和session_key// 登录wx.login({success: res > {console.log(res)// 发送 res.code 到后台换取 openId, sessionKey, unionIdwx.request({url: api.GET_OPENID, //data: {js_code: res.code},succes…

C#实用技巧之:将图标打包进DLL并读取

概述个人的项目界面有时候需要用到很多图标&#xff0c;这些图片可以建立一个文件夹单独存放&#xff0c;但有时涉及到多台设备部署的话&#xff0c;每台设备都需要随项目一起拷贝过去&#xff0c;如果忘记了界面显示就会出问题&#xff0c;有没有更好的办法解决&#xff1f;有…

强制IE浏览器或WebBrowser控件使用指定版本显示网页

最近为了抓取淘宝的成交数据,用C#的WebBrowser控件开发了一个简单的程序. 发现WebBrowser控件默认使用的版本是IE7的兼容模式.而淘宝的宝贝详细页居然对IE7的支持不是很好. 成交记录无法显示,而我本机安装的是IE10,那么有没有办法使我的WebBrowser控件的使用的IE版本高点呢? 查…

【计算机图形学】实验:VB.net环境下的绘制贝赛尔(Bezier)自由曲线完整实验操作步骤

一、实验目的 熟练掌握在.net环境下绘制贝赛尔自由曲线。 二、实验准备 学习生成贝赛尔自由曲线的基本算法,以及在.net环境下绘制贝赛尔自由曲线的基本方法(DrawBezier和DrawBeziers)。 三、实验内容 在.net环境中绘制二次、三次贝赛尔曲线。 四、实验过程及步骤 (包…

Git之撤销add操作

1 问题 git add file或者git add folder错了 2 解决办法 git reset HEAD 如果后面什么都不跟的话 就是上一次add 里面的全部撤销了 git reset HEAD XXX/XXX/XXX.java 就是对某个文件进行撤销了 git reset HEAD XXX/XXX/XXX/. 就是对某个文件夹进行撤销了

配置FTP服务2(vsftpd 配置虚拟账号)

1. 安装软件yum -y install vsftpd* yum -y install pam* yum -y install db4*2. 建立虚拟账号相关联的系统账号useradd virftp -s /sbin/nologin 3. 建立虚拟账户相关的文件touch /etc/vsftpd/vsftpd_login并把你要建立的用户写到里面&#xff0c;奇数行是用户名&#xff…

《零基础看得懂的C++入门教程 》——(10)面向对象

一、学习目标 了解C类是什么了解类对象与类型修饰一样进行创建了解了类的属性如何使用了解了类方法的使用方法 目录 预备第一篇&#xff0c;使用软件介绍在这一篇&#xff0c;C与C使用的软件是一样的&#xff0c;查看这篇即可&#xff1a;《软件介绍》 想了解编译原理和学习…

appinventor连接MySQL_appinventor如何连接sqlserver数据库

java中使用jdbc连接sqlserver数据库步骤&#xff1a;1。JDBC连接SQLServer的驱动安装,前两个是属于数据库软件,正常安装即可(注意数据库登陆不要使用windows验证)将JDBC解压缩到任意位置,比如解压到C盘programfiles下面,并在安装目录里找到sqljdbc。jar文件,得到其路径开始配置…

浅谈JSONP

这是我在13年初写的文章&#xff0c;当时懵懵懂懂写下了自己对JSONP的理解。 文章原文 博客 欢迎订阅 提到JSONP&#xff0c;我当时在网上找了无数帖子也没有看懂它。那些文章大同小异&#xff0c;都是讲到JSONP原理以后就戛然而止&#xff0c;把我们这些初学者搞得云里雾里。所…

Asp.Net Core 7 preview 4 重磅新特性--限流

前言限流是应对流量暴增或某些用户恶意攻击等场景的重要手段之一&#xff0c;然而微软官方从未支持这一重要特性&#xff0c;AspNetCoreRateLimit这一第三方库限流库一般作为首选使用&#xff0c;然而其配置参数过于繁多&#xff0c;对使用者造成较大的学习成本。令人高兴的是&…

【计算机图形学】实验:C#.net环境下采用GDI+图形特技处理案例教程

一、实验目的 掌握在.net环境下对图形特技的处理方法。 二、实验准备 学习在.net环境下读取图像文件、改变颜色等基本知识。 三、实验内容 在.net环境中实现对图像的灰度化处理、柔化和锐化、底片滤镜、淡入淡出以及浮雕、油画和木刻等艺术效果。 四、实验过程及步骤 (…