一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - Java教程 - Spring Security整合CAS的示例代碼

Spring Security整合CAS的示例代碼

2021-05-13 12:01亂世浮生 Java教程

本篇文章主要介紹了Spring Security整合CAS的示例代碼,小編覺得挺不錯的,現在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧

這里使用的是spring-security和原生的jasig cas包來進行整合,為什么沒有直接使用spring提供的spring-security-cas,后面會進行解釋。

配置

web.xml

?
1
2
3
4
5
6
7
8
9
10
11
12
<filter>
 <filter-name>casfilterchain</filter-name>
 <filter-class>org.springframework.web.filter.delegatingfilterproxy</filter-class>
</filter>
<filter-mapping>
 <filter-name>casfilterchain</filter-name>
 <url-pattern>/*</url-pattern>
</filter-mapping>
 
<listener>
 <listener-class>org.jasig.cas.client.session.singlesignouthttpsessionlistener</listener-class>
</listener>

applicationcontext-security.xml

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
<?xml version="1.0" encoding="utf-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
  xmlns:xsi="http://www.w3.org/2001/xmlschema-instance"
  xmlns:security="http://www.springframework.org/schema/security"
  xmlns:util="http://www.springframework.org/schema/util"
  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.2.xsd http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util.xsd">
 
 <bean id="casfilterchain" class="org.springframework.security.web.filterchainproxy">
  <constructor-arg>
   <util:list>
    <security:filter-chain pattern="/**" filters="singlesignoutfilter, cas20proxyreceivingticketvalidationfilter, authenticationfilter, httpservletrequestwrapperfilter, assertionthreadlocalfilter"/>
   </util:list>
  </constructor-arg>
 </bean>
 
 <bean id="singlesignoutfilter" class="org.jasig.cas.client.session.singlesignoutfilter"/>
 
 <bean id="cas20proxyreceivingticketvalidationfilter"
   class="org.jasig.cas.client.validation.cas20proxyreceivingticketvalidationfilter">
  <property name="servername" value="${client.url}"/>
  <property name="ticketvalidator" ref="cas20serviceticketvalidator"/>
 </bean>
 
 <bean id="cas20serviceticketvalidator" class="org.jasig.cas.client.validation.cas20serviceticketvalidator">
  <constructor-arg value="${cas.url}"/>
  <property name="renew" value="false"/>
 </bean>
 
 <bean id="authenticationfilter" class="org.jasig.cas.client.authentication.authenticationfilter">
  <property name="renew" value="false"/>
  <property name="casserverloginurl" value="${cas.url}"/>
  <property name="servername" value="${client.url}"/>
 </bean>
 
 <bean id="httpservletrequestwrapperfilter" class="org.jasig.cas.client.util.httpservletrequestwrapperfilter"/>
 
 <bean id="assertionthreadlocalfilter" class="org.jasig.cas.client.util.assertionthreadlocalfilter"/>
 
</beans>

properties

?
1
2
3
4
#cas服務地址
cas.url=https://cas.example.com:8443
#cas客戶端地址,就是本應用的地址
client.url=http://localhost:8080

分析

在applicationcontext-security.xml中的security filter chain中,我們使用了5個filter,分別是:singlesignoutfilter、cas20proxyreceivingticketvalidationfilter、authenticationfilter、httpservletrequestwrapperfilter、assertionthreadlocalfilter。

為什么不用spring-security-cas

spring-security-cas

在spring-security-cas中負責ticket validator filter使用的是org.springframework.security.cas.authentication.casauthenticationprovider。

?
1
2
3
4
private casauthenticationtoken authenticatenow(final authentication authentication) throws authenticationexception {
 try {
  final assertion assertion = this.ticketvalidator.validate(authentication.getcredentials().tostring(), getserviceurl(authentication));
  ...

在構建validator的validator方法的第二個參數時

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
private string getserviceurl(authentication authentication) {
 string serviceurl;
 if(authentication.getdetails() instanceof serviceauthenticationdetails) {
  serviceurl = ((serviceauthenticationdetails)authentication.getdetails()).getserviceurl();
 }else if(serviceproperties == null){
  throw new illegalstateexception("serviceproperties cannot be null unless authentication.getdetails() implements serviceauthenticationdetails.");
 }else if(serviceproperties.getservice() == null){
  throw new illegalstateexception("serviceproperties.getservice() cannot be null unless authentication.getdetails() implements serviceauthenticationdetails.");
 }else {
  serviceurl = serviceproperties.getservice();
 }
 if(logger.isdebugenabled()) {
  logger.debug("serviceurl = "+serviceurl);
 }
 return serviceurl;
}

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持服務器之家。

原文鏈接:http://atbug.com/spring-security-integrated-with-cas/

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 国产日韩精品一区二区三区 | 精品无码一区二区三区中文字幕 | 操美女网址 | 国产成人黄网在线免 | 十六以下岁女子毛片免费 | 国产99页 | 日韩高清在线高清免费 | 免费观看日本人成影片 | 亚洲精品久久久WWW游戏好玩 | 国产视频久久久久 | 性奴公司 警花 | 日韩欧美一区二区在线观看 | 男人的j伸到女人的屁股眼 男人吃奶动态图 | 免费导航 | 91精品综合久久久久久五月天 | 亚洲成人黄色网址 | 俄罗斯激情性孕妇孕交大全 | 国产欧美一区二区三区免费 | 日韩久久精品 | chinese男同志gay免费 | 扒开双腿疯狂进出爽爽动态图 | 亚洲aⅴ男人的天堂在线观看 | 四虎影视在线看 | 5151hh四虎国产精品 | 亚洲午夜久久久久国产 | 欧美肥b| 美女脱一净二净不带胸罩 | 欧美日韩精品乱国产 | 国产99视频精品免费视频7 | 成人免费播放 | 99久久国产综合精品1尤物 | 国产日韩成人 | 激情乱文 | 99久久精品免费看国产四区 | 精品国产剧情在线观看 | 香港三级浴室女警官 | 男人j桶进女人p桶爽 | 美女黄a | 亚洲欧美日韩成人 | 成人综合婷婷国产精品久久免费 | 国产成人在线免费视频 |