天天看點

SSO處理流程|學習筆記SSO處理流程阿裡雲開發者學院

開發者學堂課程【Java面試疑難點串講5:系統架構及項目設計:SSO處理流程】學習筆記,與課程緊密聯系,讓使用者快速學習知識。

課程位址: https://developer.aliyun.com/learning/course/28

SSO處理流程

阿裡雲開發者學院

目錄:

一、SSO的處理流程

二、CSA

●所謂單點登入用在什麼場景上:單點登入的上主要是用再叢集上的應用場景。

●SSO應用場景

 ◆阿裡雲目前支援兩種SSO方式:角色SSO和使用者SSO。本文為您介紹這兩種方式的适用場景和選擇依據,幫助您根據整體業務需求選擇合适的SSO方式。

  ★角色SSO

角色SSO适用于以下場景: 

出于管理成本考慮,不希望在雲端建立和管理使用者,進而避免使用者同步帶來的工作量。

在使用SSO的同時,仍然保留一部分雲上本地使用者,可以在阿裡雲直接登入。雲上本地使用者的用途可以是新功能測試、網絡或企業IdP出現問題時的備用登入方式等。

根據使用者在本地IdP中加入的組或者使用者的某個特殊屬性,來區分雲上擁有的權限。當進行權限調整時,隻需要在本地進行分組或屬性的更改。

a、擁有多個阿裡雲賬号但使用統一的企業IdP,希望在企業IdP配置一次,就可以實作到多個阿裡雲賬号的SSO。

b、各個分支機構存在多個IdP,都需要通路同一個阿裡雲賬号,您需要在一個阿裡雲賬号内配置多個IdP進行SSO。

C、除了控制台,也希望使用程式通路的方式來進行SSO。

  ★使用者SSO

使用者SSO适用于以下場景: 

a、希望從阿裡雲的登入頁面開始發起登入,而非直接通路您IdP的登入頁面。

b、需要使用的雲産品中有部分暫時不支援角色通路。

C、IdP不支援複雜的自定義屬性配置。

d、沒有上述需要使用角色SSO的業務需求,而又希望盡量簡化IdP配置。

SSO處理流程|學習筆記SSO處理流程阿裡雲開發者學院

二、CAS

●CAS有一個自己的流程,在其中SSO流程有一個最關鍵的流程是https(Openssl 證書簽發)

SSO處理流程|學習筆記SSO處理流程阿裡雲開發者學院

CAS是Central Authentication Service的縮寫,中央認證服務,一種獨立開放指令協定。CAS 是 

耶魯大學

(Yale University)發起的一個開源項目,旨在為 Web 應用系統提供一種可靠的

單點登入

方法,CAS 在 2004 年 12 月正式成為 JA-SIG 的一個項目。

特點

1、開源的企業級單點登入解決方案。

2、CAS Server 為需要獨立部署的 Web 應用。

3、CAS Client 支援非常多的用戶端(這裡指單點登入系統中的各個 Web 應用),包括 Java, .Net, PHP, Perl, Apache, uPortal, Ruby 等語言編寫的各種web應用。

4、CAS屬于Apache 2.0許可證,允許代碼修改,再釋出(作為開源或商業軟體)。

5、原理和協定

從結構上看,CAS 包含兩個部分: CAS Server 和 CAS Client。CAS Server 需要獨立部署,主要負責對使用者的認證工作;CAS Client 負責處理對用戶端受保護資源的通路請求,需要登入時,重定向到 CAS Server。圖1 是 CAS 最基本的協定過程:

SSO處理流程|學習筆記SSO處理流程阿裡雲開發者學院

CAS Client 與受保護的用戶端應用部署在一起,以 Filter 方式保護受保護的資源。對于通路受保護資源的每個 Web 請求,CAS Client 會分析該請求的 Http 請求中是否包含 Service Ticket,如果沒有,則說明目前使用者尚未登入,于是将請求重定向到指定好的 CAS Server 登入位址,并傳遞 Service (也就是要通路的目的資源位址),以便登入成功過後轉回該位址。

使用者在第 3 步中輸入認證資訊,如果登入成功,CAS Server 随機産生一個相當長度、唯一、不可僞造的 Service Ticket,并緩存以待将來驗證,之後系統自動重定向到 Service 所在位址,并為用戶端浏覽器設定一個 Ticket Granted Cookie(TGC),CAS Client 在拿到 Service 和新産生的 Ticket 過後,在第 5,6 步中與 CAS Server 進行身份核實,以確定 Service Ticket 的合法性。

在該協定中,所有與 CAS 的互動均采用 SSL 協定,確定,ST 和 TGC 的安全性。協定工作過程中會有 2 次重定向的過程,但是 CAS Client 與 CAS Server 之間進行 Ticket 驗證的過程對于使用者是透明的。

另外,CAS 協定中還提供了 Proxy (代理)模式,以适應更加進階、複雜的應用場景。