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.pswp.cn/news/287626.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/287626.shtml
英文地址,請注明出處:http://en.pswp.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環境中實現對圖像的灰度化處理、柔化和銳化、底片濾鏡、淡入淡出以及浮雕、油畫和木刻等藝術效果。 四、實驗過程及步驟 (…