一、單點登入概念了解
在多個應用系統,或者是分布式系統中,使用者隻需要登入一次,再通路其他系統,就不需要再次登入,自動登入。
二、單點登入實作原理
要實作單點登入,主要需要解決兩個問題:1.session共享,2.ajax跨域問題。可以将使用者身份資訊存儲在第三方單點登入認證伺服器,可以使用cas單點登入架構實作,cas共享使用者身份資訊,cookie存儲使用者身份資訊唯一辨別(是以要實作單點登入,浏覽器不能禁用cookie),cas的協定過程如下圖:
![](https://img.laitimes.com/img/__Qf2AjLwojIjJCLyojI0JCLicmbw5SZ0YWZmdDZ1AzYhVTYjVDOxADM2QWNyEmZkJGMxUGNh9CX0JXZ252bj91Ztl2Lc52YucWbp5GZzNmLn9Gbi1yZtl2Lc9CX6MHc0RHaiojIsJye.png)
三、使用cas實作單點登入
1.下載下傳cas服務端cas-server-webapp-4.0.0.war ,将其改名為 cas.war 部署到 tomcat 目錄下的 webapps 下,浏覽器輸入 http://localhost:8080/cas/login,即可看到登入頁面:
2.cas用戶端搭建,可以搭建兩個或兩個以上的用戶端項目進行測試,搭建參考下面
(1)搭建maven工程引入cas相關依賴
org.jasig.cas.client
cas-client-core
3.3.3
javax.servlet
servlet-api
2.5
provided
(2)添加 web.xml
xmlns="http://java.sun.com/xml/ns/javaee"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
version="2.5">
org.jasig.cas.client.session.SingleSignOutHttpSessionListener
CAS Single Sign Out Filter
org.jasig.cas.client.session.SingleSignOutFilter
CAS Single Sign Out Filter
/*
CASFilter
org.jasig.cas.client.authentication.AuthenticationFilter
casServerLoginUrl
http:///localhost:8080/cas/login
serverName
http://localhost:9091
CASFilter
/*
CAS Validation Filter
org.jasig.cas.client.validation.Cas20ProxyReceivingTicketValidationFilter
casServerUrlPrefix
http:///localhost:8080/cas
serverName
http://localhost:9091
CAS Validation Filter
/*
CAS HttpServletRequest Wrapper Filter
org.jasig.cas.client.util.HttpServletRequestWrapperFilter
CAS HttpServletRequest Wrapper Filter
/*
CAS Assertion Thread Local Filter
org.jasig.cas.client.util.AssertionThreadLocalFilter
CAS Assertion Thread Local Filter
/*
3.單點登入測試
(1)啟動cas服務端
(2)啟動用戶端工程1和用戶端工程2
(3)在浏覽器分别通路兩個用戶端項目,均會跳轉到cas登入頁面,輸入使用者名密碼,通路其中一個用戶端項目後,再通路另一個用戶端項目,不需要再進行登入,單點登入實作。
4.以上測試的登入頁面是cas自帶的登入頁面,可改為自己項目的登入頁面,同時可配置使用者名和密碼從資料庫中讀取,具體實作可參考其他資料,這裡不再叙述。
End:喜歡我文章的朋友,麻煩點贊加關注,我會不定期的分享相關技術文章,謝謝!