spring boot整合CAS Client實現單點登陸驗證的樣本,springcas

來源:互聯網
上載者:User

spring boot整合CAS Client實現單點登陸驗證的樣本,springcas

本文介紹了spring boot整合CAS Client實現單點登陸驗證的樣本,分享給大家,也給自己留個筆記,具體如下:

單點登入( Single Sign-On , 簡稱 SSO )是目前比較流行的服務於企業業務整合的解決方案之一, SSO 使得在多個應用系統中,使用者只需要 登入一次 就可以訪問所有相互信任的應用系統。

CAS Client

負責處理對用戶端受保護資源的訪問請求,需要對請求方進行身份認證時,重新導向到 CAS Server 進行認證。(原則上,用戶端應用不再接受任何的使用者名稱密碼等 Credentials )。

實現方式一:使用第三方的starter

1、依賴的jar

<dependency>   <groupId>net.unicon.cas</groupId>   <artifactId>cas-client-autoconfig-support</artifactId>   <version>1.4.0-GA</version>  </dependency> 

2、增加設定檔

cas.server-url-prefix=http://127.0.0.1 cas.server-login-url=http://127.0.0.1/login cas.client-host-url=http://192.26.4.28:8080 cas.validation-type=CAS 

3、開啟CAS Client支援

@SpringBootApplication @ComponentScan(basePackages={"com.chhliu.emailservice"}) @EnableCasClient // 開啟CAS支援 public class Application extends SpringBootServletInitializer{   public static void main(String[] args) {  SpringApplication.run(Application.class, args);    } } 

通過上面的3步,就可以完成CAS的用戶端認證了!

4、擴充

cas.validation-type目前支援3中方式:1、CAS;2、CAS3;3、SAML

其他可用的配置如下:

cas.authentication-url-patterns cas.validation-url-patterns cas.request-wrapper-url-patterns cas.assertion-thread-local-url-patterns cas.gateway cas.use-session cas.redirect-after-validation cas.allowed-proxy-chains cas.proxy-callback-url cas.proxy-receptor-url cas.accept-any-proxy server.context-parameters.renew 

具體的含義從名字上就可以很清楚的看出來。

實現方式二:手動設定

我們原來使用CAS Client,需要在web.xml中做如下配置:

<filter>  <filter-name>authenticationFilter</filter-name>  <filter-class>org.jasig.cas.client.authentication.AuthenticationFilter</filter-class>  <init-param>   <param-name>casServerLoginUrl</param-name>   <param-value>http://127.0.0.1/login</param-value>  </init-param>  <init-param>   <param-name>serverName</param-name>   <param-value>http://192.26.4.28:8080</param-value>  </init-param>  </filter>  <filter-mapping>  <filter-name>authenticationFilter</filter-name>  <url-pattern>/*</url-pattern>  </filter-mapping>  <!-- 該過濾器負責對Ticket的校正工作,必須啟用它 -->  <filter>  <filter-name>validationFilter</filter-name>  <filter-class>org.jasig.cas.client.validation.Cas20ProxyReceivingTicketValidationFilter</filter-class>  <init-param>   <param-name>casServerUrlPrefix</param-name>   <param-value>http://127.0.0.1</param-value>  </init-param>  <init-param>   <param-name>serverName</param-name>   <param-value>http://192.26.4.28:8080</param-value>  </init-param>  <!-- <init-param>   <param-name>redirectAfterValidation</param-name>   <param-value>true</param-value>  </init-param>  <init-param>   <param-name>useSession</param-name>   <param-value>true</param-value>  </init-param> -->  </filter>  <filter-mapping>  <filter-name>validationFilter</filter-name>  <url-pattern>/*</url-pattern>  </filter-mapping>  <!-- 該過濾器負責實現HttpServletRequest請求的包裹, 比如允許開發人員通過HttpServletRequest的getRemoteUser()方法獲得SSO登入使用者的登入名稱,可選配置。 -->  <filter>  <filter-name>httpServletRequestWrapperFilter</filter-name>  <filter-class>org.jasig.cas.client.util.HttpServletRequestWrapperFilter</filter-class>  </filter>  <filter-mapping>  <filter-name>httpServletRequestWrapperFilter</filter-name>  <url-pattern>/*</url-pattern>  </filter-mapping> 

所以,我們手動設定的時候,需要手動設定上面xml中對應的Filter,代碼如下:

@Configuration @Component public class CasConfigure {   @Bean  public FilterRegistrationBean authenticationFilterRegistrationBean() {  FilterRegistrationBean authenticationFilter = new FilterRegistrationBean();  authenticationFilter.setFilter(new AuthenticationFilter());  Map<String, String> initParameters = new HashMap<String, String>();  initParameters.put("casServerLoginUrl", "http://127.0.0.1/login");  initParameters.put("serverName", "http://192.26.4.28:8080");  authenticationFilter.setInitParameters(initParameters);  authenticationFilter.setOrder(2);  List<String> urlPatterns = new ArrayList<String>();  urlPatterns.add("/*");// 設定匹配的url  authenticationFilter.setUrlPatterns(urlPatterns);  return authenticationFilter;  }   @Bean  public FilterRegistrationBean ValidationFilterRegistrationBean(){  FilterRegistrationBean authenticationFilter = new FilterRegistrationBean();  authenticationFilter.setFilter(new Cas20ProxyReceivingTicketValidationFilter());  Map<String, String> initParameters = new HashMap<String, String>();  initParameters.put("casServerUrlPrefix", "http://127.0.0.1");  initParameters.put("serverName", "http://192.26.4.28:8080");  authenticationFilter.setInitParameters(initParameters);  authenticationFilter.setOrder(1);  List<String> urlPatterns = new ArrayList<String>();  urlPatterns.add("/*");// 設定匹配的url  authenticationFilter.setUrlPatterns(urlPatterns);  return authenticationFilter;  }   @Bean  public FilterRegistrationBean casHttpServletRequestWrapperFilter(){  FilterRegistrationBean authenticationFilter = new FilterRegistrationBean();  authenticationFilter.setFilter(new HttpServletRequestWrapperFilter());  authenticationFilter.setOrder(3);  List<String> urlPatterns = new ArrayList<String>();  urlPatterns.add("/*");// 設定匹配的url  authenticationFilter.setUrlPatterns(urlPatterns);  return authenticationFilter;  }   @Bean  public FilterRegistrationBean casAssertionThreadLocalFilter(){  FilterRegistrationBean authenticationFilter = new FilterRegistrationBean();  authenticationFilter.setFilter(new AssertionThreadLocalFilter());  authenticationFilter.setOrder(4);  List<String> urlPatterns = new ArrayList<String>();  urlPatterns.add("/*");// 設定匹配的url  authenticationFilter.setUrlPatterns(urlPatterns);  return authenticationFilter;  } } 

通過上面的配置,也可以完成CAS Client的認證

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

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.