一、CAS單點登錄概述
CAS (Central Authentication Service) 單點登錄是一種開源的企業級單點登錄系統。它通過提供可重用的身份認證服務,使之成為一種簡單而有效的 Web 單點登錄解決方案。
CAS 單點登錄主要由兩個部分組成:CAS伺服器和CAS客戶端。CAS伺服器是用於提供身份認證服務的單獨服務。而CAS客戶端則是需要接入CAS伺服器進行身份認證的應用系統。
二、CAS單點登錄原理
CAS單點登錄的核心原理是代理允許,CAS認證中心負責生成 TGT (Ticket Granting Ticket) 和 ST (Service Ticket) 以及校驗 TGT 和 ST 的有效性。CAS客戶端調用CAS服務的統一登錄界面,將用戶登錄信息提交給 CAS認證中心進行身份認證,認證通過後,CAS認證中心會生成一個 TGT 並將其返回給 CAS客戶端。當用戶訪問其他客戶端應用系統時,如果沒有經過身份驗證,則此時客戶端應用會將請求轉發到 CAS 認證中心,由 CAS 認證中心根據 ST 的有效性向客戶端應用系統返回用戶的信息。
CAS認證中心會在用戶初次認證通過後,記錄 ST 的有效期,每次 CAS客戶端向 CAS認證中心校驗 ST 時,CAS認證中心都會判斷 ST 是否過期或已被使用過,如果 ST 有效,就返回給 CAS客戶端 ST 中包含的用戶身份信息。
三、CAS單點登錄的實現
1、部署CAS伺服器
部署CAS伺服器需要有一定的 Java 編程和伺服器管理經驗。首先需下載CAS伺服器的壓縮包並解壓,配置部署文件,主要有以下幾個文件:
- deployerConfigContext.xml
- log4j2.xml
- ticketExpirationPolicies.xml
- web.xml
其中,deployerConfigContext.xml 為主要配置文件,用以配置 CAS 服務端的具體實現。ticketExpirationPolicies.xml 用以配置 CAS 服務端票據的過期時間。
2、集成CAS客戶端
CAS客戶端是需要接入CAS伺服器進行身份驗證的應用系統。CAS客戶端可以是 Java 應用、PHP 應用或其他類型的應用系統。
集成CAS客戶端需要對CAS客戶端進行配置。CAS客戶端主要配置以下信息:
- cas.server.url.prefix:CAS伺服器所在地址前綴
- cas.server.login_url:CAS伺服器登錄地址
- cas.server.logout_url:CAS伺服器註銷地址
- cas.client.service_url:CAS客戶端應用系統地址(需要向CAS伺服器進行註冊)
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/DTD/spring-beans.dtd"> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p" xmlns:security="http://www.springframework.org/schema/security" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/security http://www.springframework.org/schema/security/spring-security-3.0.xsd"> <!--配置CAS客戶端--> <bean id="casClient" class="org.jasig.cas.client.validation.Cas20ServiceTicketValidator"> <constructor-arg value="https://cas.server.com" /> </bean> <bean id="casAuthenticationEntryPoint" class="org.springframework.security.cas.web.CasAuthenticationEntryPoint"> <property name="loginUrl" value="https://cas.server.com/login" /> <property name="serviceProperties" ref="casProperties" /> </bean> <bean id="casProperties" class="org.springframework.beans.factory.config.PropertiesFactoryBean"> <property name="properties"> <props> <prop key="casServerUrlPrefix">https://cas.server.com</prop> <prop key="casServerLoginUrl">https://cas.server.com/login</prop> <prop key="casServerLogoutUrl">https://cas.server.com/logout</prop> <prop key="casClientServiceUrl">https://client.server.com/service</prop> </props> </property> </bean> </beans>
四、CAS單點登錄的應用場景
1、統一身份認證
CAS單點登錄可以用於實現企業內部各個應用系統的身份認證,用戶登錄不同的應用系統無需再次輸入用戶名和密碼,提高了操作效率。
2、集中控制系統許可權
CAS單點登錄可以進行許可權控制,通過配置授權策略實現對特定用戶和角色等訪問許可權的控制。
3、實現單點註銷
CAS單點登錄可以實現單點註銷,當用戶在一個客戶端應用註銷登錄時,會自動觸發其他已經登錄的應用進行註銷。
4、簡化開發和維護
使用CAS單點登錄可以實現代碼的復用,不同應用系統只需要進行簡單的配置就可以實現單點登錄的功能,減少了開發和維護的工作量。
原創文章,作者:FNBGB,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/370002.html