1. 程式人生 > >spring security 整合cas

spring security 整合cas

目錄

       眾所周知,Cas是對單點登入的一種實現。本文假設讀者已經瞭解了Cas的原理及其使用,這些內容在本文將不會討論。Cas有Server端和Client端,Client端通常對應著我們自己的應用,Spring Security整合Cas指的就是在Spring Security應用中整合Cas Client,已達到使用Cas Server實現單點登入和登出的效果。本文旨在描述如何在Spring Security應用中使用Cas的單點登入。

       首先需要將Spring Security對Cas支援的jar包加入到應用的類路徑中。如果我們的應用使用Maven構造的,則可以在應用的pom.xml檔案中加上如下依賴。

   <dependency>

      <groupId>org.springframework.security</groupId>

      <artifactId>spring-security-cas</artifactId>

      <version>${spring.security.version}</version>

   </dependency>

1.1     配置登入認證

       加入了spring-security-cas-xxx.jar到Spring Security應用的classpath後,我們便可以開始配置我們的Spring Security應用使用Cas進行單點登入了。

1.1.1配置AuthenticationEntryPoint

       首先需要做的是將應用的登入認證入口改為使用CasAuthenticationEntryPoint。所以首先我們需要配置一個CasAuthenticationEntryPoint對應的bean,然後指定需要進行登入認證時使用該AuthenticationEntryPoint。配置CasAuthenticationEntryPoint時需要指定一個ServiceProperties,該物件主要用來描述service(Cas概念)相關的屬性,主要是指定在Cas Server認證成功後將要跳轉的地址。

   <!-- 

指定登入入口為casEntryPoint -->

   <security:http  entry-point-ref="casEntryPoint">

      ...

   </security:http>

   <!-- 認證的入口 -->

   <bean id="casEntryPoint"

      class="org.springframework.security.cas.web.CasAuthenticationEntryPoint">

      <!-- Cas Server的登入地址,elim是我的計算機名 -->

      <property name="loginUrl" value="https://elim:8443/cas/login" />

      <!-- service相關的屬性 -->

      <property name="serviceProperties" ref="serviceProperties" />

   </bean>

   <!-- 指定service相關資訊 -->

   <bean id="serviceProperties"class="org.springframework.security.cas.ServiceProperties">

      <!-- Cas Server認證成功後的跳轉地址,這裡要跳轉到我們的Spring Security應用,之後會由CasAuthenticationFilter處理,預設處理地址為/j_spring_cas_security_check -->

      <property name="service"

         value="http://elim:8080/app/j_spring_cas_security_check" />

   </bean>

1.1.2配置CasAuthenticationFilter

       之後我們需要配置一個CasAuthenticationFilter,並將其放置在Filter連結串列中CAS_FILTER的位置,以處理Cas Server認證成功後的頁面跳轉,用以在Spring Security中進行認證。該Filter會將Cas Server傳遞過來的ticket(Cas概念)封裝成一個Authentication(對應UsernamePasswordAuthenticationToken,其中ticket作為該Authentication的password),然後傳遞給AuthenticationManager進行認證。

   <security:http entry-point-ref="casEntryPoint">

      ...

      <security:custom-filter ref="casFilter" position="CAS_FILTER"/>

      ...

   </security:http>

   <bean id="casFilter"

      class="org.springframework.security.cas.web.CasAuthenticationFilter">

      <property name="authenticationManager" ref="authenticationManager" />

      <!-- 指定處理地址,不指定時預設將會是“/j_spring_cas_security_check” -->

      <property name="filterProcessesUrl" value="/j_spring_cas_security_check"/>

   </bean>

1.1.3配置AuthenticationManager

       CasAuthenticationFilter會將封裝好的包含Cas Server傳遞過來的ticket的Authentication物件傳遞給AuthenticationManager進行認證。我們知道預設的AuthenticationManager實現類為ProviderManager,而ProviderManager中真正進行認證的是AuthenticationProvider。所以接下來我們要在AuthenticationManager中配置一個能夠處理CasAuthenticationFilter傳遞過來的Authentication物件的AuthenticationProvider實現,CasAuthenticationProvider。CasAuthenticationProvider首先會利用TicketValidator(Cas概念)對Authentication中包含的ticket資訊進行認證。認證通過後將利用持有的AuthenticationUserDetailsService根據認證通過後回傳的Assertion物件中擁有的username載入使用者對應的UserDetails,即主要是載入使用者的相關許可權資訊GrantedAuthority。然後構造一個CasAuthenticationToken進行返回。之後的邏輯就是正常的Spring Security的邏輯了。

   <security:authentication-manager alias="authenticationManager">

      <security:authentication-provider ref="casAuthenticationProvider"/>

   </security:authentication-manager>

   <bean id="casAuthenticationProvider"

   class="org.springframework.security.cas.authentication.CasAuthenticationProvider">

      <!-- 通過username來載入UserDetails -->

      <property name="authenticationUserDetailsService">

         <beanclass="org.springframework.security.core.userdetails.UserDetailsByNameServiceWrapper">

            <!-- 真正載入UserDetailsUserDetailsService實現 -->

            <constructor-arg ref="userDetailsService" />

         </bean>

      </property>

      <property name="serviceProperties" ref="serviceProperties" />

      <!-- 配置TicketValidator在登入認證成功後驗證ticket -->

      <property name="ticketValidator">

         <bean class="org.jasig.cas.client.validation.Cas20ServiceTicketValidator">

            <!-- Cas Server訪問地址的字首,即根路徑-->

            <constructor-arg index="0" value="https:// elim:8443/cas" />

         </bean>

      </property>

      <property name="key" value="key4CasAuthenticationProvider" />

   </bean>

   <bean id="userDetailsService"

      class="org.springframework.security.core.userdetails.jdbc.JdbcDaoImpl">

      <property name="dataSource" ref="dataSource" />

   </bean>

       經過以上三步配置以後,我們的Spring Security應用就已經跟Cas整合好了,可以在需要登入的時候通過Cas Server進行單點登入了。

1.2     單點登出

       Spring Security應用整合Cas Client配置單點登出功能實際和單獨使用Cas Client配置單點登出功能一樣,其根本都是通過配置一個SingleSignOutFilter響應Cas Server單點登出時的回撥,配置一個SingleSignOutHttpSessionListener用於在Session過期時刪除SingleSignOutFilter存放的對應資訊。SingleSignOutFilter需要配置在Cas 的AuthenticationFilter之前,對於Spring Security應用而言,該Filter通常是配置在Spring Security的配置檔案中,而且是配置在CAS_FILTER之前。所以我們可以在Spring Security的配置檔案中進行如下配置。

   <security:http entry-point-ref="casEntryPoint">

      <!-- SingleSignOutFilter放在CAS_FILTER之前 -->

      <security:custom-filter ref="casLogoutFilter" before="CAS_FILTER"/>

      <security:custom-filter ref="casFilter" position="CAS_FILTER"/>

      ...

   </security:http>

   <bean id="casLogoutFilter" class="org.jasig.cas.client.session.SingleSignOutFilter"/>

       然後跟單獨使用Cas Client一樣,在web.xml檔案中配置一個SingleSignOutHttpSessionListener。

   <listener>

   <listener-class>org.jasig.cas.client.session.SingleSignOutHttpSessionListener</listener-class>

   </listener>

       經過以上配置在訪問Cas Server的logout地址(如:https:elim:8443/cas/logout)進行登出時,Cas Server登出後將回調其中註冊的每一個Service(Cas概念,即client應用),此時在client應用中配置好的SingleSignOutFilter將處理對應Client應用的登出操作。

       雖然以上配置可以滿足我們在Spring Security應用中的單點登出要求,但Cas官方文件和Spring Security官方文件都推薦我們在Cas Client應用進行登出操作時,不是直接訪問Cas Server的logout,而是先登出本應用,然後告訴使用者其當前登出的只是本應用,再提供一個對應Cas Server的連結,使其可以進行真正的單點登出。對此,Spring Security官方文件中給我們提供例子是提供兩個LogoutFilter,一個是登出當前Spring Security應用,一個是登出Cas Server的。

   <security:http entry-point-ref="casEntryPoint">

      <!-- 請求登出Cas Server的過濾器,放在Spring Security的登出過濾器之前 -->

      <security:custom-filter ref="requestCasLogoutFilter" before="LOGOUT_FILTER"/>

      <!-- SingleSignOutFilter放在CAS_FILTER之前 -->

      <security:custom-filter ref="casLogoutFilter" before="CAS_FILTER"/>

      <security:custom-filter ref="casFilter" position="CAS_FILTER"/>

      ...

   </security:http>

   <bean id="requestCasLogoutFilter"class="org.springframework.security.web.authentication.logout.LogoutFilter">

      <!-- 指定登出成功後需要跳轉的地址,這裡指向Cas Server的登出URL,以實現單點登出 -->

      <constructor-arg value="https://elim:8443/cas/logout"/>

       <constructor-arg>

         <beanclass="org.springframework.security.web.authentication.logout.SecurityContextLogoutHandler"/>

       </constructor-arg>

       <!-- Filter需要處理的地址,預設是Spring Security的預設登出地址“/j_spring_security_logout”-->

       <property name="filterProcessesUrl" value="/j_spring_cas_security_logout"/>

   </bean>

       此外,Spring Security推薦我們在使用Cas Server的單點登出時一起使用CharacterEncodingFilter,以避免SingleSignOutFilter在獲取引數時出現編碼問題。

1.3     使用代理

       關於Cas應用使用代理的基本原理、概念等內容的介紹不在本文討論範圍之內,如需瞭解請讀者參考其它資料,或者參考我的另一篇博文。本文旨在描述Spring Security應用在整合Cas後如何通過Cas Proxy訪問另一個受Cas包含的應用。

       使用Cas Proxy時有兩個主體,代理端和被代理端。而且我們知道代理端和被代理端針對Cas20ProxyReceivingTicketValidationFilter的配置是不一樣的,雖然整合Cas的Spring Security應用不再使用Cas20ProxyReceivingTicketValidationFilter了,但其底層的核心機制是一樣的。所以Cas整合Spring Security後的應用在作為代理端和被代理端時的配置也是不一樣的。接下來將分開講解Spring Security應用作為代理端和被代理端整合Cas後的配置。

1.3.1代理端

       首先需要為CasAuthenticationFilter多指定兩個引數,proxyReceptorUrl和proxyGrantingTicketStorage。proxyReceptorUrl用以指定Cas Server在回撥代理端傳遞pgtId和pgtIou時回撥地址相對於代理端的路徑,如“/proxyCallback”,CasAuthenticationFilter會根據proxyReceptorUrl來確定一個請求是否來自Cas Server針對proxy的回撥。如果是則需要接收Cas Server傳遞過來的pgtId和pgtIou,並將它們儲存在持有的ProxyGrantingTicketStorage中。CasAuthenticationProvider之後會從ProxyGrantingTicketStorage中獲取對應的pgtId,即proxy granting ticket,並將其儲存在AttributePrincipal中,而AttributePrincipal又會儲存到對應的Assertion中。

   <!-- 配置ProxyGrantingTicketStorage,用以儲存pgtIdpgtIou -->

   <bean id="proxyGrantingTicketStorage"class="org.jasig.cas.client.proxy.ProxyGrantingTicketStorageImpl"/>

   <bean id="casFilter"

      class="org.springframework.security.cas.web.CasAuthenticationFilter">

      <property name="authenticationManager" ref="authenticationManager" />

      <!-- 指定處理地址,不指定時預設將會是“/j_spring_cas_security_check” -->

      <property name="filterProcessesUrl" value="/j_spring_cas_security_check"/>

      <property name="proxyGrantingTicketStorage" ref="proxyGrantingTicketStorage"/>

      <property name="proxyReceptorUrl" value="/proxyCallback"/>

   </bean>

       其次是需要將CasAuthenticationProvider持有的TicketValidator由Cas20ServiceTicketValidator改成Cas20ProxyTicketValidator。其需要配置一個ProxyGrantingTicketStorage用來獲取proxy granting ticket,即我們熟知的pgtId。在單獨使用Cas Proxy時,Cas20ProxyReceivingTicketValidationFilter內部預設持有一個ProxyGrantingTicketStorage實現,其使用的Cas20ProxyTicketValidator也將使用該ProxyGrantingTicketStorage。整合Spring Security之後, Spring Security不使用Cas20ProxyReceivingTicketValidationFilter,而直接由CasAuthenticationFilter獲取proxy granting ticket,由CasAuthenticationProvider對ticket進行校驗。Cas20ProxyTicketValidator內部沒預設的ProxyGrantingTicketStorage,所以在配置Cas20ProxyTicketValidator時我們需要給其指定一個ProxyGrantingTicketStorage實現。此外還需要為Cas20ProxyTicketValidator指定一個proxyCallbackUrl用以指定在Cas20ProxyTicketValidator通過Cas Server校驗service ticket成功後將回調哪個地址以傳遞pgtId和pgtIou。proxyCallbackUrl預設情況下必須使用https協議,而應用的其它請求可以用非https協議。其它的配置和Cas20ServiceTicketValidator一樣,Cas20ProxyTicketValidator的父類其實就是Cas20ServiceTicketValidator。

   <bean id="casAuthenticationProvider"

   class="org.springframework.security.cas.authentication.CasAuthenticationProvider">

      <!-- 通過username來載入UserDetails -->

      <property name="authenticationUserDetailsService">

         <beanclass="org.springframework.security.core.userdetails.UserDetailsByNameServiceWrapper">

            <!-- 真正載入UserDetailsUserDetailsService實現 -->

            <constructor-arg ref="userDetailsService" />

         </bean>

      </property>

      <property name="serviceProperties" ref="serviceProperties" />

      <!-- 配置TicketValidator在登入認證成功後驗證ticket -->

      <property name="ticketValidator">

         <bean class="org.jasig.cas.client.validation.Cas20ProxyTicketValidator">

            <!-- Cas Server訪問地址的字首,即根路徑-->

            <constructor-arg index="0" value="https://elim:8443/cas" />

            <!-- 指定Cas Server回撥傳遞pgtIdpgtIou的地址,該地址必須使用https協議 -->

            <property name="proxyCallbackUrl"value="https://elim:8043/app/proxyCallback"/>

            <property name="proxyGrantingTicketStorage" ref="proxyGrantingTicketStorage"/>

         </bean>

      </property>

      <property name="key" value="key4CasAuthenticationProvider" />

   </bean>

       經過以上步驟後我們整合Cas後的Spring Security應用就可以作為代理端使用Cas proxy訪問其它被Cas保護的應用了,當然前提是其它被代理端能夠接受我們應用的代理,瞭解Cas Proxy的人應該都知道這一點,在接下來的Spring Security應用整合Cas作為被代理端中也會講到這部分內容。這裡我們假設現在有一個應用app2能夠接受我們應用的代理訪問,那麼在基於上述配置的應用中我們可以通過如下程式碼訪問app2。

@Controller

@RequestMapping("/cas/test")

publicclass CasTestController {

   @RequestMapping("/getData")

   publicvoid getDataFromApp(PrintWriter writer) throws Exception {

      //1、從SecurityContextHolder獲取到當前的Authentication物件,其是一個CasAuthenticationToken

      CasAuthenticationToken cat = (CasAuthenticationToken)SecurityContextHolder.getContext().getAuthentication();

      //2、獲取到AttributePrincipal物件

      AttributePrincipal principal = cat.getAssertion().getPrincipal();

      //3、獲取對應的proxy ticket

      String proxyTicket = principal.getProxyTicketFor("http://elim:8081/app2/getData.jsp");

      //4、請求被代理應用時將獲取到的proxy ticket以引數ticket進行傳遞

      URL url = new URL("http://elim:8081/app2/getData.jsp?ticket=" + URLEncoder.encode(proxyTicket, "UTF-8"));

      HttpURLConnection conn = (HttpURLConnection)url.openConnection();

      BufferedReader br = new BufferedReader(new InputStreamReader(conn.getInputStream(),"UTF-8"));

      StringBuffer content = new StringBuffer();

      String line = null;

      while ((line=br.readLine()) != null) {

         content.append(line).append("<br/>");

      }

      writer.write(content.toString());

   }

}

       需要注意的是通過AttributePrincipal的getProxyTicketFor()方法獲取proxy ticket時,每呼叫一次都會獲取一個全新的proxy ticket。使用者可以根據自己的需要將獲取到的proxy ticket按照指定的URL快取起來,以避免每次都去針對同一個URL獲取一個全新的proxy ticket。此外,如果在被代理端認證時根據proxy ticket快取了Authentication的話也需要我們在代理端保證針對同一URL傳遞過去的proxy ticket是一樣的,否則被代理端針對proxy ticket快取Authentication的功能就沒用了。

1.3.2被代理端

       Spring Security應用整合Cas使用Cas Proxy作為被代理端時主要需要進行三點修改。

       第一點是通過ServiceProperties指定CasAuthenticationFilter的authenticateAllArtifacts為true,這樣CasAuthenticationFilter將會嘗試對所有ticket進行認證,而不是隻認證來自filterProccessUrl指定地址的請求。這樣代理端在請求被代理端的資源時將proxy ticket以引數ticket進行傳遞時,CasAuthenticationFilter才會讓CasAuthenticationProvider對proxy ticket進行校驗,這樣我們的請求才有可能被CasAuthenticationProvider認證成功並請求到真正的資源。

       第二點是指定CasAuthenticationFilter使用的AuthenticationDetailsSource為ServiceAuthenticationDetailsSource。CasAuthenticationFilter預設使用的是WebAuthenticationDetailsSource。ServiceAuthenticationDetailsSource將構建一個ServiceAuthenticationDetails物件作為當前Authentication的details物件。ServiceAuthenticationDetailsSource構建的ServiceAuthenticationDetails物件會將當前請求的地址構建為一個serviceUrl,通過其getServiceUrl()方法可以獲取到該serviceUrl地址。之後該Authentication物件傳遞到CasAuthenticationProvider進行認證時就可以從Authentication的details中獲取到對應的serviceUrl,並在通過Cas Server對代理端以引數ticket傳遞過來的proxy ticket進行驗證時連同對應的serviceUrl一起傳遞過去。因為之前代理端申請proxy ticket時就是通過該serviceUrl進行申請的,Cas Server需要對於它們的配對來驗證對應的proxy ticket是否有效。

       第三點是將CasAuthenticationProvider的TicketValidator由Cas20ServiceTicketValidator改為Cas20ProxyTicketValidator,因為Cas Proxy被代理端需要呼叫Cas Server的proxyValidator對代理端傳遞過來的proxy ticket進行驗證。此外需要通過acceptAnyProxy或allowedProxyChains指定將接受哪些代理。acceptAnyProxy用以指定是否接受所有的代理,可選值為true或false。allowedProxyChains則用以指定具體接受哪些代理,其對應的值是代理端在獲取pgtId時提供給Cas Server的回撥地址,如我們需要接受前面示例中代理端的代理,則我們的allowedProxyChains的值應該是“https://elim:8043/app/proxyCallback”。如果需要接受多個代理端的代理,則在指定allowedProxyChains時多個代理端回撥地址應各佔一行。

       針對以上三點,我們的Spring Security應用整合Cas作為Cas Proxy的被代理端時需要對我們的配置進行如下改造。

   <!-- 指定service相關資訊 -->

   <bean id="serviceProperties"class="org.springframework.security.cas.ServiceProperties">

      <!-- Cas Server認證成功後的跳轉地址,這裡要跳轉到我們的Spring Security應用,之後會由CasAuthenticationFilter處理,預設處理地址為/j_spring_cas_security_check -->

      <property name="service"

         value="http://elim:8083/app2/j_spring_cas_security_check" />

      <!-- 通過ServiceProperties指定CasAuthenticationFilterauthenticateAllArtifactstrue -->

      <property name="authenticateAllArtifacts" value="true"/>

   </bean>

   <bean id="casFilter"

      class="org.springframework.security.cas.web.CasAuthenticationFilter">

      <property name="authenticationManager" ref="authenticationManager" />

      <!-- 指定處理地址,不指定時預設將會是“/j_spring_cas_security_check” -->

      <property name="filterProcessesUrl" value="/j_spring_cas_security_check" />

      <!-- 通過ServiceProperties指定CasAuthenticationFilterauthenticateAllArtifactstrue  -->

      <property name="serviceProperties" ref="serviceProperties" />

      <!-- 指定使用的AuthenticationDetailsSourceServiceAuthenticationDetailsSource -->

      <property name="authenticationDetailsSource">

         <beanclass="org.springframework.security.cas.web.authentication.ServiceAuthenticationDetailsSource"/>

      </property>

   </bean>

   <bean id="casAuthenticationProvider"

   class="org.springframework.security.cas.authentication.CasAuthenticationProvider">

      <!-- 通過username來載入UserDetails -->

      <property name="authenticationUserDetailsService">

         <beanclass="org.springframework.security.core.userdetails.UserDetailsByNameServiceWrapper">

            <!-- 真正載入UserDetailsUserDetailsService實現 -->

            <constructor-arg ref="userDetailsService" />

         </bean>

      </property>

      <property name="serviceProperties" ref="serviceProperties" />

      <!-- 配置TicketValidator在登入認證成功後驗證ticket -->

      <property name="ticketValidator">

         <bean class="org.jasig.cas.client.validation.Cas20ProxyTicketValidator">

            <!-- Cas Server訪問地址的字首,即根路徑-->

            <constructor-arg index="0" value="https://elim:8443/cas" />

            <property name="allowedProxyChains">

                <value>https://elim:8043/app/proxyCallback</value>

            </property>

         </bean>

      </property>

      <property name="key" value="key4CasAuthenticationProvider" />

   </bean>

       此外,對於被代理端而言,代理端在對其進行訪問時都被認為是無狀態的。對於無狀態的認證CasAuthenticationProvider將在認證成功後將對應的Authentication物件以proxy tickit為key存放到所持有的StatelessTicketCache中,然後在下次代理端訪問時將優先根據代理端傳遞過來的proxy ticket從StatelessTicketCache中獲取Authentication物件,如果存在則不再進行認證,否則將繼續進行認證。CasAuthenticationProvider預設持有的StatelessTicketCache為NullStatelessTicketCache,其所有的實現都是空的。所以預設情況下,被代理端在被代理端訪問時將每次都對代理端進行認證。如果使用者不希望在被代理端每次都對代理端的請求進行認證,則可以為被代理端的CasAuthenticationProvider指定一個StatelessTicketCache。使用者可以實現自己的StatelessTicketCache,並指定CasAuthenticationProvider使用的StatelessTicketCache為該StatelessTicketCache。不過也可以使用Spring Security為我們提供的EhCacheBasedTicketCache。EhCacheBasedTicketCache是基於Ehcache實現的一個StatelessTicketCache。以下是一個為CasAuthenticationProvider配置EhCacheBasedTicketCache的示例。

   <bean id="casAuthenticationProvider"

   class="org.springframework.security.cas.authentication.CasAuthenticationProvider">

……

      <property name="statelessTicketCache">

         <beanclass="org.springframework.security.cas.authentication.EhCacheBasedTicketCache">

            <!-- Ehcache物件 -->

            <property name="cache" ref="proxyTicketCache"/>

         </bean>

      </property>

……

   </bean>

   <!-- 定義一個Ehcache -->

   <bean id="proxyTicketCache"class="org.springframework.cache.ehcache.EhCacheFactoryBean">

      <property name="cacheName" value="proxyTicketCache" />

      <property name=

相關推薦

Spring-Security整合CASSpring-Security.xml部分配置詳解

<?xml version="1.0" encoding="UTF-8"?> <beans:beans xmlns="http://www.springframework.org/schema/security" xmlns:beans="http://w

Spring Security整合CAS客戶端

在正常的開發過程中,一般會使用spring Security等安全框架來進行登入使用者的攔截,因為使用安全框架,可以配置特定的角色訪問特定的資源,這裡簡單說明Sping Security整合CAS的使用 Spring Security整合CAS 建立maven

spring security 整合cas

目錄        眾所周知,Cas是對單點登入的一種實現。本文假設讀者已經瞭解了Cas的原理及其使用,這些內容在本文將不會討論。Cas有Server端和Client端,Client端通常對應著我們自己的應用,Spring Security整合Cas指的就是在Spring Securi

Spring Security整合Cas後頁面跳轉問題

問題描述:在整合cas後,如果在A應用裡面直接呼叫B應用的某個頁面,第一次點選的時候總是會跳轉到B應用設定的預設頁面,然後再點選的時候,才能跳轉到正確的頁面。後來通過檢視原始碼,發現類:org.springframework.security.web.authenticati

spring security整合cas實現單點登入

spring security整合cas 0.配置本地ssl連線 操作記錄如下: =====================1.建立證書檔案thekeystore ,並匯出為thekeystore.crt cd C:\Users\23570\keystore C:\Users\23570\keystore&

spring securitycas 整合(中)

上一篇對於spring security與cas整合中涉及的名詞,認證與授權進行簡單說明,現在將spring security與cas整合的配置檔案簡單貼上來,這其中所需要的jar太多了,主要涉及cas client 3.1,spring security 3.2, spr

Spring boot 整合 cas Java client

最近在做CAS相關的內容,在搭建了CAS伺服器之後,再搭建一個web client。可以通過簡單的web專案搭建方法搭建。CAS 官方給出了較為詳細的過濾器配置方法,甚至還給出了基於web.xml配置的示例。 Spring boot這麼好用,不一起搞一下說不過去。那就搞一個

Spring Security 整合freemaker 實現簡單登入和角色控制

寫這篇文章是因為我做了一個電商網站專案,近期剛加上許可權控制。整個過程很簡單,在此給大家梳理一下,也算是自己對知識點的一個總結。 一、需求分析: 我們都知道,電商網站在許可權這一塊,有兩大塊內容:        1、使用者未登入,部分頁面拒絕訪問(

Spring SecurityCAS原理 SSO

原文:https://blog.csdn.net/cruise_h/article/details/51013597 https://blog.csdn.net/weixin_42813765/article/details/82315305 https://www.cnblogs.com/

spring security 整合 oauth2

前言 之前一篇部落格學過security的核心,這次整合一下oauth2,它也是市場上比較流行的介面驗證的一種方式了 引入pom 文中提及的整合oauth2的方式是建立在boot 的基礎上的.在引入的boot 和security的start之後,我們還需要引入oauth

Spring security 整合ldap服務,實現統一驗證

<span style="font-size:18px;">先說一下Spring security 是基於spring的一個強大的安全驗證模組,它提供了一組可以在Spring應用上下文中配置的Bean,充分利用了Spring IoC,DI(控制反轉Invers

spring security --- 與cas 結合

1,新建springboot專案,引入spring security 包,springboot自動啟動springsecurity 配置2,啟動專案並訪問會提示輸入使用者名稱和密碼3,繼承UserDetailsService,重寫loaduserByUsername()方法,

Spring Security 整合 微信小程式登入的思路探討

![](https://img2020.cnblogs.com/other/1739473/202103/1739473-20210305142814994-760395158.png) ## 1. 前言 原本打算把**Spring Security**中**OAuth 2.0**的機制講完後,用小程式登

Spring Security 3和CAS 3.5.2整合的完整例項

摘要 使用Spring Security 3與CAS 3.5.2整合,完成單點登入與單點登出。並使用Apache httpd做逆向代理。本實驗可以按照其中的步驟,一步一步的搭建一個稍微複雜的多網站整合系統。只要按照步驟走了,一定能跑起來。 回顧 在上一篇文章,利用S

cas單點登入整合spring security

在學習security的過程中接觸到了cas,並學習了cas的配置和整合security    Cas伺服器端的配置     一、使用java keytool工具為系統生成Https證書,並註冊 1.刪除已有的證書 C:\Program Files\Java\jdk1.6

單點登入cas從部署到應用和casspring security整合 ------1

程式碼下載地址 沒法上傳不要積分的,,我也很無奈 單點登入cas從部署到應用和cas和spring security的整合 ------2 單點登入cas從部署到應用和cas和spring security的整合 ------3 第一步下載 war 包 

Spring Security 集成 CAS(基於HTTP協議版本)

可能 key 1.3 remove gin repo produce writing monit Spring Security 集成 CAS(基於HTTP協議版本) 近段時間一直研究Spring Security 集成 CAS,網上資料相關資料也很多,不過大都是基於Htt

Spring boot 整合spring Data JPA+Spring Security+Thymeleaf框架(上)

current 不可 src rac 分享圖片 正在 html AC ren 近期上班太忙所以耽擱了給大家分享實戰springboot 框架的使用。 以下是spri

spring security+cas(cas proxy配置)

interface iteye RF lns key sock nag spec uitable 什麽時候會用到代理proxy模式? 舉一個例子:有兩個應用App1和App2,它們都是受Cas服務器保護的,即請求它們時都需要通過Cas 服務器的認證。現在需要在App1中通過

Spring Boot整合Spring Security

只開啟了簡單的登陸驗證 新增依賴 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-star