web工程中集成cas单点登录
背景
cas的服務端已經搭建成功,現在需要在web項目中集成cas client。我們項目使用spring
1、在pom中配置
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單點登錄的過程:
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单点登录的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 复制类中的属性值到另一个类的相同属性中
- 下一篇: 一个服务器上配置多个tomcat