cas單點登錄

来源:https://www.cnblogs.com/kangaroohu/archive/2018/09/08/9607823.html
-Advertisement-
Play Games

將多個系統的登陸認證步驟集中在登陸系統統一管理,用戶只需要登陸一次就可以在多個系統之間來回切換使用 ...


一般一家企業內部會有多個業務系統,多個系統相互協作,但每個系統都需要登陸密碼,比如:許可權系統,發佈系統,配置系統,郵件系統等,用戶使用每個系統都需要登陸操作,使用起來比較繁瑣,工作效率低下。此時就需要引入SSO來解決以上問題,把多個系統的登陸認證步驟集中在登陸系統統一管理,用戶只需要登陸一次就可以在多個系統之間來回切換使用;目前實現SSO的主流框架就是CAS

基於Cookie

將用戶名密碼加密之後存於Cookie中,之後訪問網站時在過濾器(filter)中校驗用戶許可權,從Cookie中取出用戶名密碼進行登錄,讓用戶從某種意義上覺得只登錄了一次

統一認證中心方案原理

第一次訪問www.qiandu.com

  • 標號1 用戶訪問http://www.qiandu.com,經過他的第一個過濾器(cas提供,在web.xml中配置)AuthenticationFilter,判斷是否登錄,如果沒有登錄則重定向到認證中心
  • 標號2 www.qiandu.com發現用戶沒有登錄,則返回瀏覽器重定向地址;返回狀態碼302,然後讓瀏覽器重定向到cas.qiandu.com並且通過get的方式添加參數service,該參數目的是登錄成功之後會要重定向回來,因此需要該參數。並且你會發現,其實server的值就是編碼之後的我們請求www.qiandu.com的地址
  • 標號3 瀏覽器接收到重定向之後發起重定向,請求cas.qiandu.com
  • 標號4 認證中心cas.qiandu.com接收到登錄請求,返回登陸頁面
  • 標號5 用戶在cas.qiandu.com的login頁面輸入用戶名密碼,提交
  • 標號6 伺服器接收到用戶名密碼,則驗證是否有效,驗證邏輯可以使用cas-server提供現成的,也可以自己實現
  • 標號7 瀏覽器從cas.qiandu.com那裡拿到ticket之後,就根據指示重定向到www.qiandu.com,請求的url就是上面返回的url
  • 標號8 www.qiandu.com在過濾器中會取到ticket的值,然後通過http方式調用cas.qiandu.com驗證該ticket是否是有效的
  • 標號9 cas.qiandu.com接收到ticket之後,驗證,驗證通過返回結果告訴www.qiandu.com該ticket有效
  • 標號10 www.qiandu.com接收到cas-server的返回,知道了用戶合法,展示相關資源到用戶瀏覽器上

第二次訪問

  • 標號11 用戶發起請求,訪問www.qiandu.com。會經過cas-client,也就是過濾器,因為第一次訪問成功之後www.qiandu.com中會在session中記錄用戶信息,因此這裡直接就通過了,不用驗證了
  • 標號12 用戶通過許可權驗證,瀏覽器返回正常資源

訪問mail.qiandu.com

  • 標號13 用戶在www.qiandu.com正常上網,突然想訪問mail.qiandu.com,於是發起訪問mail.qiandu.com的請求
  • 標號14 mail.qiandu.com接收到請求,發現第一次訪問,於是給他一個重定向的地址,讓他去找認證中心登錄;用戶請求mail.qiandu.com,然後返回給他一個網址,狀態302重定向,service參數就是回來的地址
  • 標號15 瀏覽器根據14返回的地址,發起重定向,因為之前訪問過一次了,因此這次會攜帶上次返回的Cookie:TGC到認證中心
  • 標號16 認證中心收到請求,發現TGC對應了一個TGT,於是用TGT簽發一個ST(ticket),並且返回給瀏覽器,讓他重定向到mail.qiandu.com
  • 標號17 瀏覽器根據16返回的網址發起重定向
  • 標號18 mail.qiandu.com獲取ticket去認證中心驗證是否有效
  • 標號19 認證成功,返回在mail.qiandu.com的session中設置登錄狀態,下次就直接登錄
  • 標號20 認證成功之後就反正用想要訪問的資源了
 
您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • //調用 const transform = prefixStyle('transform') const backdrop = prefixStyle('backdrop-filter') div.style[transform] = `translate3d(0,0,0)` 等同於 div.st ...
  • CSS的四種引用方式: 1、行內樣式、內聯樣式 2、內嵌樣式、內部樣式 3、鏈接樣式 4、導入樣式 行內樣式 、內聯樣式 行內樣式是最簡單的一種css(Cascading Style Sheets【層疊樣式表】)使用方式,就是在html標簽中使用style屬性添加CSS樣式。 例如: <p styl ...
  • 近期已朋友問我問題,實現類似淘寶百度的下啦搜索條,看了網上好多帖子,都看起來好複雜,而且引用了好多沒用的東西,而且多選選擇內容多之後容易樣式奔潰, 無奈之下只好自己改了, 話不多說上效果圖: 模糊搜索廣會自動補全所有帶廣的下拉選項.每個選中的可以單獨刪除. 大神勿噴,給需要的朋友個幫助,話不多說,上 ...
  • 一、安裝NPM 1.1最新穩定版本: npm install vue 二、命令行工具安裝 國內速度慢,使用淘寶鏡像: npm install -g cnpm --registry=https://registry.npm.taobao.org 註意:以後使用npm的地方就替換成cnpm 1、全局安裝 ...
  • Angular新建項目步驟記錄 標簽(空格分隔): Angular 1. 2. 啟動dev環境 3. 修改 為`styles.scss`,同時修改文件 .angular cli.json 中的: 重新打包。 4. 配置全局樣式 /src 目錄下添加 文件夾 /scss 目錄下添加 ,`./utili ...
  • 一、初始JavaScript 二、瀏覽器的組成 2008年Google發佈了Chrome,它是採用優化後的js引擎,引擎代號V8,因能把js代碼直接轉化成機械碼0101來執行,進而以速度快而聞名。 ...
  • ( ′◔ ‸◔`)現在的公司啊都流行混合開發,我們公司也不例外,非要把交互非常多的社區模塊用內嵌web頁展示,好吧好吧,畢竟有的應用也是這麼做的,那既然是社區就肯定少不了用戶上傳圖片的操作,在開發階段沒有發現任何問題,也是很奇怪,等到了測試階段,發現部分機型和IOS機型拍照之後,web頁獲取路徑之後 ...
  • 在前後端分離的項目中,通常需要啟動一個後臺伺服器來配合前端項目的介面需求。Mockjs的作用是攔截ajax請求並模擬各種數據返回,讓前端開發可以更加自由獨立。 安裝 使用 Mock.mock()第一個參數是需要攔截的介面,第二個參數表明ajax請求類型(get/post/put/delete等),第 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...