SpringBoot集成cas-client 客户端配置拦截过滤,绝对最简单有效,亲测

本文详细介绍了如何在SpringBoot项目中集成CAS客户端,并通过配置AuthenticationFilter实现特定URL的过滤和忽略,适用于需要进行单点登录场景的项目。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

我使用的cas-client客户端为2.0.0-GA。对于以前使用web.xml进行配置的只需要更改配置文件即可。此文我主要是针对用于SpringBoot集成客户端的过滤请求讲解。

由于最新的cas客户端只有server-url-prefix ,server-login-url,client-host-url,authentication-url-patterns等几个配置而取消了原xml中进行配置的ignorePattern、ignoreUrlPatternType配置,所以如果需要配置拦截过滤的话,只需要将ignorePattern、ignoreUrlPatternType两个参数添加到AuthenticationFilter过滤器中即可。

两个思路:

1)将ignorePattern、ignoreUrlPatternType两个参数添加到AuthenticationFilter过滤器中

2)使用authentication-url-patterns配置需要进行拦截的正则表达式请求,那么剩下的没有配置的即不进行过滤

下面给出第一种方法的代码:

package cn.piesat.pieswc.portal.common.config;

import org.jasig.cas.client.authentication.AuthenticationFilter;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.web.servlet.FilterRegistrationBean;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

import java.util.HashMap;
import java.util.Map;

@Configuration
public class CasUrlPatternConfig {

    @Value("${cas.server-login-url}")
    private String casServerLoginUrl;

    @Value("${cas.client-host-url}")
    private String casClientHostUrl;

    @Value("${cas-ignore-pattern}")
    private String casIgnorePattern;

    /**
     * description:授权过滤器
     * ignoreUrlPatternType 使用CAS现成的正则表达式过滤策略
     */
    @Bean
    public FilterRegistrationBean filterAuthenticationRegistration() {
        FilterRegistrationBean registration = new FilterRegistrationBean();
        registration.setFilter(new AuthenticationFilter());
        registration.addUrlPatterns("/*");

        Map<String,String> initParameters = new HashMap<String, String>();
        initParameters.put("casServerLoginUrl", casServerLoginUrl);
        initParameters.put("serverName", casClientHostUrl);
        //配置文件中设置要过滤拦截的路径
        initParameters.put("ignorePattern", casIgnorePattern);
        initParameters.put("ignoreUrlPatternType", "org.jasig.cas.client.authentication.RegexUrlPatternMatcherStrategy");
        registration.setInitParameters(initParameters);

        registration.setOrder(1);
        return registration;
    }
}

PS: 再补充一下多个过滤路径的配置: 不同的路径只需要用 ()|()处理即可。例如,我需要过滤/app/*以及/file/*下的路径,则只需要在application文件中配置为: 

cas-ignore-pattern=(/app/*)|(/file/*)
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值