SpringBoot中关于一些项目的配置(CAS登录验证)

SpringBoot中关于一些项目的配置

CAS登录验证

cas配置登录拦截回调

package com.microvideo.ewcp.configration;

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.HttpServletRequestWrapperFilter;
import org.jasig.cas.client.validation.Cas20ProxyReceivingTicketValidationFilter;
import org.jasig.cas.client.validation.Cas20ProxyTicketValidator;
import org.springframework.beans.factory.annotation.Value;
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.core.Ordered;

import com.microvideo.ewcp.main.filter.LoginFilter;
/**
 * cas配置类
 * @author zhaoc
 *
 */
@Configuration
public class CasConfig {

    //从配置文件中拿到服务器地址
    private static String serviceurlone;
    @Value("${serviceurlone}")
    public  void setServiceurlone(String serviceurlone) {
        CasConfig.serviceurlone = serviceurlone;
    }


    @Bean
    public ServletListenerRegistrationBean servletListenerRegistrationBean(){
        ServletListenerRegistrationBean  listenerRegistrationBean = new ServletListenerRegistrationBean();
        listenerRegistrationBean.setListener(new SingleSignOutHttpSessionListener());
        listenerRegistrationBean.setOrder(Ordered.HIGHEST_PRECEDENCE);
        return listenerRegistrationBean;
    }

    /**
     * 单点登录退出
     * @return
     */
    @Bean
    public FilterRegistrationBean singleSignOutFilter(){
        SingleSignOutFilter signOut = new SingleSignOutFilter();
        signOut.setIgnoreInitConfiguration(true);
        FilterRegistrationBean registrationBean = new FilterRegistrationBean();
        registrationBean.setFilter(signOut);

        registrationBean.setOrder(2);
        registrationBean.addInitParameter("serviceurlone", serviceurlone);
        return registrationBean;
    }

    /**
     * 单点登录认证
     * @return
     */
    @Bean
    public FilterRegistrationBean AuthenticationFilter(){
        AuthenticationFilter auth = new AuthenticationFilter();
        auth.setIgnoreInitConfiguration(true);
        auth.setCasServerLoginUrl(LoginFilter.CASURL);
        auth.setServerName(serviceurlone);
        auth.setCustomUnit("TZJJ");
        auth.setNotVerifyUrl("/policeservice/,/carservice/,/login/,/boundservice/,/pcFind/");
        FilterRegistrationBean registrationBean = new FilterRegistrationBean();
        registrationBean.setFilter(auth);
        registrationBean.addUrlPatterns("/*");
        registrationBean.setName("CAS Filter");
        registrationBean.setOrder(3);
        registrationBean.addInitParameter("serviceurlone", serviceurlone);
        return registrationBean;
    }

    /**
     * 单点登录校验
     * @return
     */
    @Bean
    public FilterRegistrationBean cas20ProxyReceivingTicketValidationFilter(){
        Cas20ProxyReceivingTicketValidationFilter validation = new Cas20ProxyReceivingTicketValidationFilter();
        validation.setIgnoreInitConfiguration(true);
        validation.setMillisBetweenCleanUps(60000);
        final Cas20ProxyTicketValidator v = new Cas20ProxyTicketValidator(LoginFilter.CASPREURL);
        validation.setTicketValidator(v);
        validation.setServerName(serviceurlone);
        FilterRegistrationBean registrationBean = new FilterRegistrationBean();
        registrationBean.setFilter(validation);
        registrationBean.addUrlPatterns("/*");
        registrationBean.setName("CAS Validation Filter");

        registrationBean.setOrder(4);
        registrationBean.addInitParameter("serviceurlone", serviceurlone);
        return registrationBean;
    }

    /**
     * 单点登录请求包装
     * @return
     */
    @Bean
    public FilterRegistrationBean httpServletRequestWrapperFilter(){
        FilterRegistrationBean registrationBean = new FilterRegistrationBean();
        registrationBean.setFilter(new HttpServletRequestWrapperFilter());
        registrationBean.addUrlPatterns("/*");
        registrationBean.setName("CAS HttpServletRequest Wrapper Filter");
        registrationBean.setOrder(5);
        registrationBean.addInitParameter("serviceurlone", serviceurlone);
        return registrationBean;
    }

    /**
     * 单点登录本地用户信息
     * @return
     */
    @Bean
    public FilterRegistrationBean localUserInfoFilter(){
        FilterRegistrationBean registrationBean = new FilterRegistrationBean();
        registrationBean.setFilter(new LoginFilter());
        registrationBean.addUrlPatterns("/*");
        registrationBean.setName("LoginFilter");
        registrationBean.setOrder(6);
        registrationBean.addInitParameter("serviceurlone", serviceurlone);
        return registrationBean;
    }
}

接口请求拦截

package com.microvideo.ewcp.main.filter;

import java.io.IOException;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.microvideo.ewcp.util.QsCtrlUtil;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.util.StringUtils;

/**
 * cas登录过滤器
 * @author zhaoc
 *
 */
public class LoginFilter implements Filter{
	public static final String CASPREURL="https://127.0.0.1/MicrovideoCAS";
	public static final String CASURL="https://127.0.0.1/MicrovideoCAS/login";
	public static String HOSTURL="https://127.0.0.1";
	public static final String SERVICE="https://127.0.0.1/TZTP_EWCP/index/index";

	private final Logger log = LoggerFactory.getLogger(this.getClass());
	@Override
	public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain chain)
			throws IOException, ServletException {
		log.info("LoginFilter --->doFilter");
		HttpServletRequest request = (HttpServletRequest) servletRequest;
		HttpServletResponse response = (HttpServletResponse) servletResponse;
		String userId="";
		try {
			userId= QsCtrlUtil.getUid(request);
		} catch (Exception e) {
			response.sendRedirect(CASURL+"?service="+ HOSTURL+"/TZTP_EWCP/index/index");
		}
		if (StringUtils.isEmpty(userId)) {
			response.sendRedirect(CASURL+"?service="+ HOSTURL+"/TZTP_EWCP/index/index");
		}else {
			chain.doFilter(request, response);
		}
	}

	@Override
	public void init(FilterConfig filterConfig) throws ServletException {
		HOSTURL=filterConfig.getInitParameter("serviceurlone");
		log.info("LoginFilter --->init");
	}

	@Override
	public void destroy() {
		log.info("LoginFilter --->destroy");
	}
}

调用登录的IndexController

package com.microvideo.ewcp.index.controller;

import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.alibaba.fastjson.JSONObject;
import com.microvideo.ewcp.common.controller.UserInfoController;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.servlet.ModelAndView;

/**
 * @author yaochen
 * @date 2020/12/22 13:40
 */
@Controller
@RequestMapping("/")
public class IndexController {

	@Resource
	private UserInfoController userInfoController;
	/**
	 * 登录主页
	 * @author YW 
	 * @date 2020年12月30日 下午9:15:37
	 */
    @RequestMapping("/")
    public ModelAndView index(HttpServletRequest request,HttpServletResponse response){
    	ModelAndView mv = new ModelAndView();
    	try {
			JSONObject configParam = userInfoController.getConfigParam(response, request.getUserPrincipal().toString());
			JSONObject result = configParam.getJSONObject("result");
			mv.addObject("userInfo",result);
        	mv.setViewName("/index");
		} catch (Exception e) {
			mv.setViewName("/index");
			return mv;
		}
		System.out.println(mv);
        return mv;
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Springboot CAS-Client 是一个基于Springboot框架集成CAS(Central Authentication Service)的客户端。 CAS是一种单点登录(Single Sign-On)协议,它允许用户在一次登录后就能够访问多个应用,而无需重新认证。 Springboot CAS-Client 的作用是充当CAS服务端和应用系统之间的间件,它负责向CAS服务端发送认证请求,并根据认证结果来管理用户的登录状态。 为了集成CAS,我们首先需要在Springboot项目引入相应的依赖,例如spring-boot-starter-web和spring-boot-starter-security。接着,我们需要配置CAS服务端的地址信息,包括CAS服务端的登录URL、登出URL以及验证票据的URL等。 在Springboot CAS-Client,我们也可以自定义一些过滤器和拦截器来实现相关的功能。例如,我们可以编写一个CAS认证过滤器来拦截所有的请求,并判断用户的登录状态。如果用户未登录,则跳转到CAS服务端进行认证;如果用户已登录,则直接放行请求。此外,我们还可以编写一个CAS登出拦截器来处理用户的登出请求,并在登出完成后将用户重定向到指定的页面。 总的来说,Springboot CAS-Client 提供了一个简洁、灵活的方式来集成CAS协议,使得我们的Springboot应用能够享受到单点登录带来的便利。通过它,我们可以轻松地实现用户认证、登录状态管理以及注销等功能,提升用户体验并提高开发效率。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值