程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> PHP編程 >> 關於PHP編程 >> CAS實現SSO單點登錄原理

CAS實現SSO單點登錄原理

編輯:關於PHP編程

CAS實現SSO單點登錄原理


1.CAS簡介

1.1.What is CAS?

CAS(Central Authentication Service) 是Yale大學發起的一個企業級的、開源的項目,旨在為Web應用系統提供一種可靠的單點登錄解決方法(屬於Web SSO)。

CAS開始於2001年, 並在2004年12月正式成為JA-SIG的一個項目。

1.2.主要特性

1、開源的、多協議的SSO解決方案;Protocols:Custom Protocol、CAS、OAuth、OpenID、RESTful API、SAML1.1、SAML2.0等。

2、支持多種認證機制:Active Directory、JAAS、JDBC、LDAP、X.509 Certificates等;

3、安全策略:使用票據(Ticket)來實現支持的認證協議;

4、支持授權:可以決定哪些服務可以請求和驗證服務票據(Service Ticket);

5、提供高可用性:通過把認證過的狀態數據存儲在TicketRegistry組件中,這些組件有很多支持分布式環境的實現,如:BerkleyDB、Default、EhcacheTicketRegistry、JDBCTicketRegistry、JBOSS TreeCache、JpaTicketRegistry、MemcacheTicketRegistry等;

6、支持多種客戶端:Java、.Net、PHP、Perl、Apache, uPortal等。

2.SSO單點登錄原理

本文內容主要針對Web SSO。

2.1.什麼是SSO

單點登錄(Single Sign-On ,簡稱SSO)是目前比較流行的服務於企業業務整合的解決方案之一,SSO使得在多個應用系統中,用戶只需要登錄一次就可以訪問所有相互信任的應用系統。

2.2.SSO原理

2.2.1.SSO體系中的角色

一般SSO體系主要角色有三種:

1、User(多個)

2、Web應用(多個)

3、SSO認證中心(1個)

2.2.2.SSO實現模式的原則

SSO實現模式一般包括以下三個原則:

1、所有的認證登錄都在SSO認證中心進行;

2、SSO認證中心通過一些方法來告訴Web應用當前訪問用戶究竟是不是已通過認證的用戶;

3、SSO認證中心和所有的Web應用建立一種信任關系,也就是說web應用必須信任認證中心。(單點信任)

2.2.3.SSO主要實現方式

SSO的主要實現方式有:

1、共享cookies

基於共享同域的cookie是Web剛開始階段時使用的一種方式,它利用浏覽同域名之間自動傳遞cookies機制,實現兩個域名之間系統令牌傳遞問題;另外,關於跨域問題,雖然cookies本身不跨域,但可以利用它實現跨域的SSO。如:代理、暴露SSO令牌值等。

缺點:不靈活而且有不少安全隱患,已經被拋棄。

2、Broker-based(基於經紀人)

這種技術的特點就是,有一個集中的認證和用戶帳號管理的服務器。經紀人給被用於進一步請求的電子身份存取。中央數據庫的使用減少了管理的代價,並為認證提供一個公共和獨立的"第三方"。例如Kerberos、Sesame、IBM KryptoKnight(憑證庫思想)等。Kerberos是由麻省理工大學發明的安全認證服務,已經被UNIX和Windows作為默認的安全認證服務集成進操作系統。

3、Agent-based(基於代理人)

在這種解決方案中,有一個自動地為不同的應用程序認證用戶身份的代理程序。這個代理程序需要設計有不同的功能。比如,它可以使用口令表或加密密鑰來自動地將認證的負擔從用戶移開。代理人被放在服務器上面,在服務器的認證系統和客戶端認證方法之間充當一個"翻譯"。例如SSH等。

4、Token-based

例如SecureID,WebID,現在被廣泛使用的口令認證,比如FTP、郵件服務器的登錄認證,這是一種簡單易用的方式,實現一個口令在多種應用當中使用。

5、基於網關

6、基於SAML

SAML(Security Assertion Markup Language,安全斷言標記語言)的出現大大簡化了SSO,並被OASIS批准為SSO的執行標准。開源組織OpenSAML實現了SAML規范。

3.CAS的基本原理

3.1.結構體系

從結構體系看,CAS包括兩部分:CAS Server和CAS Client。

3.1.1.CAS Server

CAS Server負責完成對用戶的認證工作,需要獨立部署,CAS Server會處理用戶名/密碼等憑證(Credentials)。

3.1.2.CAS Client

負責處理對客戶端受保護資源的訪問請求,需要對請求方進行身份認證時,重定向到CAS Server進行認證。(原則上,客戶端應用不再接受任何的用戶名密碼等Credentials)。

CAS Client與受保護的客戶端應用部署在一起,以Filter方式保護受保護的資源。

3.2.CAS原理和協議

3.2.1.基礎模式

基礎模式SSO訪問流程主要有以下步驟:

1.訪問服務:SSO客戶端發送請求訪問應用系統提供的服務資源。

2.定向認證:SSO客戶端會重定向用戶請求到SSO服務器。

3.用戶認證:用戶身份認證。

4.發放票據:SSO服務器會產生一個隨機的Service Ticket。

5.驗證票據:SSO服務器驗證票據Service Ticket的合法性,驗證通過後,允許客戶端訪問服務。

6.傳輸用戶信息:SSO服務器驗證票據通過後,傳輸用戶認證結果信息給客戶端。

下面是CAS最基本的協議過程:

cas基礎協議圖

基礎協議圖

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved