日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

web工程中集成cas单点登录

發布時間:2025/3/19 编程问答 17 豆豆
生活随笔 收集整理的這篇文章主要介紹了 web工程中集成cas单点登录 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

背景
cas的服務端已經搭建成功,現在需要在web項目中集成cas client。我們項目使用spring
1、在pom中配置

<!--cas單點登錄 --><dependency><groupId>org.jasig.cas.client</groupId><artifactId>cas-client-core</artifactId><version>${cas.version}</version></dependency>

2、web.xml配置cas地址

<!-- request工具類--><listener><listener-class>org.springframework.web.context.request.RequestContextListener</listener-class></listener><!-- 用于單點退出,該過濾器用于實現單點登出功能,可選配置 --><listener><listener-class>org.jasig.cas.client.session.SingleSignOutHttpSessionListener</listener-class></listener><!-- 該過濾器用于實現單點登出功能,可選配置。 --><!-- <filter><filter-name>CAS Single Sign Out Filter</filter-name><filter-class>org.jasig.cas.client.session.SingleSignOutFilter</filter-class><init-param><param-name>casServerUrlPrefix</param-name><param-value>http://221.11.98.32:8088/cas/logout</param-value></init-param></filter><filter-mapping><filter-name>CAS Single Sign Out Filter</filter-name><url-pattern>/nwfs/platform/security/logout</url-pattern></filter-mapping> --><!-- 該過濾器用于實現單點登錄功能 --><filter><filter-name>CAS Filter</filter-name><filter-class>org.jasig.cas.client.authentication.AuthenticationFilter</filter-class><init-param><param-name>casServerLoginUrl</param-name><param-value>http://221.11.98.32:8088/cas/login</param-value><!-- 使用的CAS-Server的登錄地址,一定是到登錄的action --></init-param><init-param><param-name>serverName</param-name><param-value>http://192.168.43.6:8080/nwfs</param-value><!-- 當前Client系統的地址 --></init-param></filter><filter-mapping><filter-name>CAS Filter</filter-name><url-pattern>/*</url-pattern></filter-mapping> <!-- 該過濾器負責對Ticket的校驗工作 --><filter><filter-name>CAS Validation Filter</filter-name><filter-class>org.jasig.cas.client.validation.Cas20ProxyReceivingTicketValidationFilter</filter-class><init-param><param-name>targetBeanName</param-name><param-value>loginSinglePointScoreBp</param-value></init-param><init-param><param-name>casServerUrlPrefix</param-name><param-value>http://221.11.98.32:8088/cas</param-value><!-- 使用的CAS-Server的地址,一定是在瀏覽器輸入該地址能正常打開CAS-Server的根地址 --></init-param><init-param><param-name>serverName</param-name><param-value>http://192.168.43.6:8080/nwfs</param-value><!-- 當前Client系統的地址 --></init-param></filter><filter-mapping><filter-name>CAS Validation Filter</filter-name><url-pattern>/*</url-pattern></filter-mapping> <!-- 該過濾器負責實現HttpServletRequest請求的包裹, 比如允許開發者通過HttpServletRequest的getRemoteUser()方法獲得SSO登錄用戶的登錄名,可選配置。 --><filter><filter-name>CAS HttpServletRequest Wrapper Filter</filter-name><filter-class>org.jasig.cas.client.util.HttpServletRequestWrapperFilter</filter-class></filter><filter-mapping><filter-name>CAS HttpServletRequest Wrapper Filter</filter-name><url-pattern>/*</url-pattern></filter-mapping> <!--該過濾器使得開發者可以通過org.jasig.cas.client.util.AssertionHolder來獲取用戶的登錄名。比如AssertionHolder.getAssertion().getPrincipal().getName()或者request.getUserPrincipal().getName()--><!-- <filter><filter-name>CAS Assertion Thread Local Filter</filter-name><filter-class>org.jasig.cas.client.util.AssertionThreadLocalFilter</filter-class></filter><filter-mapping><filter-name>CAS Assertion Thread Local Filter</filter-name><url-pattern>/*</url-pattern></filter-mapping> --><!-- ========================單點登錄結束 ======================== -->

注意:上面的地址其實只有兩個,
1、web項目地址:http://192.168.43.6:8080/nwfs 地址+項目名稱
2、cas單點登錄的地址:http://221.11.98.32:8088/cas
如果服務端沒有變化,一般登錄為/login,登出為/logout
3、攔截處理
我在spring的登錄攔截器中處理了單點登錄的攔截

/*** 判斷是否從cas登錄,如果從cas服務端傳過來登錄名并且session中沒有值,表示沒有進行cas登錄*/String csaLoginUser = request.getRemoteUser(); if (StringUtils.isNotBlank(csaLoginUser)&&StringUtils.isBlank(mcSession.getUserID())) {//cas臨時處理loginSinglePointScoreBp.caslogin(request,csaLoginUser);this.sendRedirectHomeFrame(request, response);return false;}

上述就是我集成cas的過程,登出現在還沒有集成,后期集成好后繼續更新。
cas單點登錄的過程:
https://blog.csdn.net/qq_34246546/article/details/79493208
cas單點登錄:
1、登錄訪問進入cas的org.jasig.cas.client.authentication.AuthenticationFilter的過濾器,攔截到配置的cas服務上,重定向到cas服務端時會傳參數service,該參數目的是登錄成功之后會要重定向回來,因此需要該參數。
2、cas登錄成功后,服務端后請求web項目的地址,并且有一個ticket的參數(不管你的web.xml中怎樣配置,它只訪問你的ip+端口號+項目名稱這個地址)
3、web項目接受到這個請求后,通過org.jasig.cas.client.validation.Cas20ProxyReceivingTicketValidationFilter過濾器,發送到cas的服務端即http://221.11.98.32:8088/cas,驗證這個ticket是否有效,如果有效訪問http://192.168.43.6:8080/nwfs這個地址。

總結

以上是生活随笔為你收集整理的web工程中集成cas单点登录的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。