SpringBoot tập thành CAS khách hộ đoan

Thử văn chương dụng vu ký lục tự kỷ học tập springBoot tập thành cas đích quá trình.

Châm đối cas thật hiện đan điểm đăng lục chủ yếu thị lưỡng cá bộ phân, nhất cá bộ phân thị client, nhất cá bộ phân thị server. Đối vu client, ngã môn thật hiện đích thời hầu nhu yếu tại tự kỷ đích hạng mục trung dẫn nhập tương ứng đích jar bao, nhiên hậu tăng gia tương ứng đích phối trí, tịnh thả thật hiện tương ứng đích quá lự khí tức khả. Nhi châm đối server, mục tiền tại cas đích quan võng thượng hạ tái đích server đô thị springmvc đích công trình, sở dĩ kiến nghị trực tiếp hạ tái sử dụng, tịnh thả căn cư tự kỷ đích nhu yếu tiến hành tu cải phối trí, nhi bất kiến nghị tương server công trình tu cải thành springBoot công trình.

( 1 ) thiêm gia tương ứng đích maven y lại

<dependency>
<groupId>org.jasig.cas.client</groupId>
<artifactId>cas-client-core</artifactId>
<version>3.3.3</version>
</dependency>
( 2 ) tại application.properties trung tăng gia phối trí hạng

#cas config
spring.cas.sign-out-filters=/logout
spring.cas.auth-filters=/*
spring.cas.validate-filters=/*
spring.cas.request-wrapper-filters=/*
spring.cas.assertion-filters=/*
spring.cas.cas-server-login-url=http://localhost:8080/login
spring.cas.cas-server-url-prefix=http://localhost:8080
spring.cas.redirect-after-validation=true
spring.cas.use-session=true
spring.cas.server-name=http://localhost:8001
Chú ý thượng diện đích spring.cas.cas-server-login-url thị đăng lục địa chỉ đích url, spring.cas.cas-server-url-prefix thị đăng lục địa chỉ đích IP, spring.cas.server-name thị thiêm gia đan điểm đăng lục phục vụ đích IP.

( 3 ) thiêm gia cas tự động phối trí hạng

package com.liutao.config;

import org.springframework.boot.context.properties.ConfigurationProperties;

import java.util.Arrays;
import java.util.List;

@ConfigurationProperties(prefix = "spring.cas" )
public class SpringCasAutoconfig {

static final String separator = ",";

private String validateFilters;
private String signOutFilters;
private String authFilters;
private String assertionFilters;
private String requestWrapperFilters;

private String casServerUrlPrefix;
private String casServerLoginUrl;
private String serverName;
private boolean useSession = true;
private boolean redirectAfterValidation = true;

public List<String> getValidateFilters() {
return Arrays.asList(validateFilters.split(separator));
}
public void setValidateFilters(String validateFilters) {
this.validateFilters = validateFilters;
}
public List<String> getSignOutFilters() {
return Arrays.asList(signOutFilters.split(separator));
}
public void setSignOutFilters(String signOutFilters) {
this.signOutFilters = signOutFilters;
}
public List<String> getAuthFilters() {
return Arrays.asList(authFilters.split(separator));
}
public void setAuthFilters(String authFilters) {
this.authFilters = authFilters;
}
public List<String> getAssertionFilters() {
return Arrays.asList(assertionFilters.split(separator));
}
public void setAssertionFilters(String assertionFilters) {
this.assertionFilters = assertionFilters;
}
public List<String> getRequestWrapperFilters() {
return Arrays.asList(requestWrapperFilters.split(separator));
}
public void setRequestWrapperFilters(String requestWrapperFilters) {
this.requestWrapperFilters = requestWrapperFilters;
}
public String getCasServerUrlPrefix() {
return casServerUrlPrefix;
}
public void setCasServerUrlPrefix(String casServerUrlPrefix) {
this.casServerUrlPrefix = casServerUrlPrefix;
}
public String getCasServerLoginUrl() {
return casServerLoginUrl;
}
public void setCasServerLoginUrl(String casServerLoginUrl) {
this.casServerLoginUrl = casServerLoginUrl;
}
public String getServerName() {
return serverName;
}
public void setServerName(String serverName) {
this.serverName = serverName;
}
public boolean isRedirectAfterValidation() {
return redirectAfterValidation;
}
public void setRedirectAfterValidation(boolean redirectAfterValidation) {
this.redirectAfterValidation = redirectAfterValidation;
}
public boolean isUseSession() {
return useSession;
}
public void setUseSession(boolean useSession) {
this.useSession = useSession;
}

}

( 4 ) tăng gia nhu yếu đích quá lự khí

package com.liutao.config;

import org.jasig.cas.client.authentication.AuthenticationFilter;
import org.jasig.cas.client.session.SingleSignOutFilter;
import org.jasig.cas.client.session.SingleSignOutHttpSessionListener;
import org.jasig.cas.client.util.AssertionThreadLocalFilter;
import org.jasig.cas.client.util.HttpServletRequestWrapperFilter;
import org.jasig.cas.client.validation.Cas20ProxyReceivingTicketValidationFilter;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.web.servlet.FilterRegistrationBean;
import org.springframework.boot.web.servlet.ServletListenerRegistrationBean;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.security.web.authentication.logout.LogoutFilter;
import org.springframework.security.web.authentication.logout.SecurityContextLogoutHandler;


@Configuration
public class CasConfig {

@Autowired
SpringCasAutoconfig autoconfig;

private static boolean casEnabled = true;

public CasConfig() {
}

@Bean
public SpringCasAutoconfig getSpringCasAutoconfig(){
return new SpringCasAutoconfig();
}

/**
* dụng vu thật hiện đan điểm đăng xuất công năng
*/
@Bean
public ServletListenerRegistrationBean<SingleSignOutHttpSessionListener> singleSignOutHttpSessionListener() {
ServletListenerRegistrationBean<SingleSignOutHttpSessionListener> listener = new ServletListenerRegistrationBean<>();
listener.setEnabled(casEnabled);
listener.setListener(new SingleSignOutHttpSessionListener());
listener.setOrder(1);
return listener;
}

/**
* cai quá lự khí dụng vu thật hiện đan điểm đăng xuất công năng, đan điểm thối xuất phối trí, nhất định yếu phóng tại kỳ tha filter chi tiền
*/
@Bean
public FilterRegistrationBean logOutFilter() {
FilterRegistrationBean filterRegistration = new FilterRegistrationBean();
LogoutFilter logoutFilter = new LogoutFilter(autoconfig.getCasServerUrlPrefix() + "/logout?service=" + autoconfig.getServerName(),new SecurityContextLogoutHandler());
filterRegistration.setFilter(logoutFilter);
filterRegistration.setEnabled(casEnabled);
if(autoconfig.getSignOutFilters().size()>0)
filterRegistration.setUrlPatterns(autoconfig.getSignOutFilters());
else
filterRegistration.addUrlPatterns( "/logout" );
filterRegistration.addInitParameter( "casServerUrlPrefix", autoconfig.getCasServerUrlPrefix());
filterRegistration.addInitParameter( "serverName", autoconfig.getServerName());
filterRegistration.setOrder(2);
return filterRegistration;
}

/**
* cai quá lự khí dụng vu thật hiện đan điểm đăng xuất công năng, đan điểm thối xuất phối trí, nhất định yếu phóng tại kỳ tha filter chi tiền
*/
@Bean
public FilterRegistrationBean singleSignOutFilter() {
FilterRegistrationBean filterRegistration = new FilterRegistrationBean();
filterRegistration.setFilter(new SingleSignOutFilter());
filterRegistration.setEnabled(casEnabled);
if(autoconfig.getSignOutFilters().size()>0)
filterRegistration.setUrlPatterns(autoconfig.getSignOutFilters());
else
filterRegistration.addUrlPatterns( "/*" );
filterRegistration.addInitParameter( "casServerUrlPrefix", autoconfig.getCasServerUrlPrefix());
filterRegistration.addInitParameter( "serverName", autoconfig.getServerName());
filterRegistration.setOrder(3);
return filterRegistration;
}

/**
* cai quá lự khí phụ trách dụng hộ đích nhận chứng công tác
*/
@Bean
public FilterRegistrationBean authenticationFilter() {
FilterRegistrationBean filterRegistration = new FilterRegistrationBean();
filterRegistration.setFilter(new AuthenticationFilter());
filterRegistration.setEnabled(casEnabled);
if(autoconfig.getAuthFilters().size()>0)
filterRegistration.setUrlPatterns(autoconfig.getAuthFilters());
else
filterRegistration.addUrlPatterns( "/*" );
//casServerLoginUrl:cas phục vụ đích đăng lục url
filterRegistration.addInitParameter( "casServerLoginUrl", autoconfig.getCasServerLoginUrl());
// bổn hạng mục đăng lục ip+port
filterRegistration.addInitParameter( "serverName", autoconfig.getServerName());
filterRegistration.addInitParameter( "useSession", autoconfig.isUseSession()? "true": "false" );
filterRegistration.addInitParameter( "redirectAfterValidation", autoconfig.isRedirectAfterValidation()? "true": "false" );
filterRegistration.setOrder(4);
return filterRegistration;
}

/**
* cai quá lự khí phụ trách đối Ticket đích giáo nghiệm công tác
*/
@Bean
public FilterRegistrationBean cas20ProxyReceivingTicketValidationFilter() {
FilterRegistrationBean filterRegistration = new FilterRegistrationBean();
Cas20ProxyReceivingTicketValidationFilter cas20ProxyReceivingTicketValidationFilter = new Cas20ProxyReceivingTicketValidationFilter();
cas20ProxyReceivingTicketValidationFilter.setServerName(autoconfig.getServerName());
filterRegistration.setFilter(cas20ProxyReceivingTicketValidationFilter);
filterRegistration.setEnabled(casEnabled);
if(autoconfig.getValidateFilters().size()>0)
filterRegistration.setUrlPatterns(autoconfig.getValidateFilters());
else
filterRegistration.addUrlPatterns( "/*" );
filterRegistration.addInitParameter( "casServerUrlPrefix", autoconfig.getCasServerUrlPrefix());
filterRegistration.addInitParameter( "serverName", autoconfig.getServerName());
filterRegistration.setOrder(5);
return filterRegistration;
}


/**
* cai quá lự khí đối HttpServletRequest thỉnh cầu bao trang, khả thông quá HttpServletRequest đích getRemoteUser() phương pháp hoạch đắc đăng lục dụng hộ đích đăng lục danh
*
*/
@Bean
public FilterRegistrationBean httpServletRequestWrapperFilter() {
FilterRegistrationBean filterRegistration = new FilterRegistrationBean();
filterRegistration.setFilter(new HttpServletRequestWrapperFilter());
filterRegistration.setEnabled(true);
if(autoconfig.getRequestWrapperFilters().size()>0)
filterRegistration.setUrlPatterns(autoconfig.getRequestWrapperFilters());
else
filterRegistration.addUrlPatterns( "/login" );
filterRegistration.setOrder(6);
return filterRegistration;
}

/**
* cai quá lự khí sử đắc khả dĩ thông quá org.jasig.cas.client.util.AssertionHolder lai hoạch thủ dụng hộ đích đăng lục danh.
Bỉ như AssertionHolder.getAssertion().getPrincipal().getName().
Giá cá loại bả Assertion tín tức phóng tại ThreadLocal biến lượng trung, giá dạng ứng dụng trình tự bất tại web tằng dã năng cú hoạch thủ đáo đương tiền đăng lục tín tức
*/
@Bean
public FilterRegistrationBean assertionThreadLocalFilter() {
FilterRegistrationBean filterRegistration = new FilterRegistrationBean();
filterRegistration.setFilter(new AssertionThreadLocalFilter());
filterRegistration.setEnabled(true);
if(autoconfig.getAssertionFilters().size()>0)
filterRegistration.setUrlPatterns(autoconfig.getAssertionFilters());
else
filterRegistration.addUrlPatterns( "/*" );
filterRegistration.setOrder(7);
return filterRegistration;
}


}

Chí thử tựu hoàn thành liễu SpringBoot tập thành cas khách hộ đoan, tường tế đại mã khả tham khảo gitHub địa chỉ: springboot-cas client




Bình luận10
Thiêm gia hồng bao

Thỉnh điền tả hồng bao chúc phúc ngữ hoặc tiêu đề

Hồng bao cá sổ tối tiểu vi 10 cá

Nguyên

Hồng bao kim ngạch tối đê 5 nguyên

Đương tiền dư ngạch3.43Nguyên Tiền vãng sung trị >
Nhu chi phó:10.00Nguyên
Thành tựu nhất ức kỹ thuật nhân!
Lĩnh thủ hậu nhĩ hội tự động thành vi bác chủ hòa hồng bao chủ đích phấn ti Quy tắc
hope_wisdom
Phát xuất đích hồng bao
Thật phóNguyên
Sử dụng dư ngạch chi phó
Điểm kích trọng tân hoạch thủ
Tảo mã chi phó
Tiền bao dư ngạch 0

Để khấu thuyết minh:

1. Dư ngạch thị tiền bao sung trị đích hư nghĩ hóa tệ, án chiếu 1:1 đích bỉ lệ tiến hành chi phó kim ngạch đích để khấu.
2. Dư ngạch vô pháp trực tiếp cấu mãi hạ tái, khả dĩ cấu mãi VIP, phó phí chuyên lan cập khóa trình.

Dư ngạch sung trị