天天看點

cas登入成功後不跳轉成功頁面_sso單點登入原理與簡單實作

一、單點登入概念了解

在多個應用系統,或者是分布式系統中,使用者隻需要登入一次,再通路其他系統,就不需要再次登入,自動登入。

二、單點登入實作原理

要實作單點登入,主要需要解決兩個問題:1.session共享,2.ajax跨域問題。可以将使用者身份資訊存儲在第三方單點登入認證伺服器,可以使用cas單點登入架構實作,cas共享使用者身份資訊,cookie存儲使用者身份資訊唯一辨別(是以要實作單點登入,浏覽器不能禁用cookie),cas的協定過程如下圖:

cas登入成功後不跳轉成功頁面_sso單點登入原理與簡單實作

三、使用cas實作單點登入

1.下載下傳cas服務端cas-server-webapp-4.0.0.war ,将其改名為 cas.war 部署到 tomcat 目錄下的 webapps 下,浏覽器輸入 http://localhost:8080/cas/login,即可看到登入頁面:

cas登入成功後不跳轉成功頁面_sso單點登入原理與簡單實作

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:喜歡我文章的朋友,麻煩點贊加關注,我會不定期的分享相關技術文章,謝謝!

繼續閱讀