专栏首页Nicky's blogCAS 5.3.1系列之客户端对接(五)

CAS 5.3.1系列之客户端对接(五)

CAS 5.3.1系列之客户端对接(五)

我们要接入客户端可以常用第三方的库cas-client-autoconfig-support来对接,比较快捷,迅速实现,或者可以用cas-client-support-springboot集成到boot项目

pom配置:

<!-- CAS依赖包 -->
        <dependency>
            <groupId>net.unicon.cas</groupId>
            <artifactId>cas-client-autoconfig-support</artifactId>
            <version>1.5.0-GA</version>
        </dependency>

application.yml配置:

cas:
  server-login-url: http://127.0.0.1:8080/cas/login
  server-url-prefix: http://127.0.0.1:8080/cas
  client-host-url: http://127.0.0.1:8082

可以自定义一个重定向策略类,这里还是和默认的策略一样,可以根据项目需要自行更改

package org.muses.jeeplatform.oa.cas;

import org.jasig.cas.client.authentication.AuthenticationRedirectStrategy;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;

public class CustomAuthticationRedirectStrategy implements AuthenticationRedirectStrategy {

    @Override
    public void redirect(HttpServletRequest request, HttpServletResponse response, String potentialRedirectUrl) throws IOException {
//        response.setCharacterEncoding("utf-8");
//        response.setContentType("application/json; charset=utf-8");
//        PrintWriter out = response.getWriter();
//        out.write("401");
        //response重定向
        response.sendRedirect(potentialRedirectUrl);
    }
}

然后通过配置类,实现CasClientConfigurerAdapter类,记得配置类要加上@EnableCasClient注解,开启CAS支持:

package org.muses.jeeplatform.oa.config;

import net.unicon.cas.client.configuration.CasClientConfigurerAdapter;
import net.unicon.cas.client.configuration.EnableCasClient;
import org.jasig.cas.client.authentication.AuthenticationFilter;
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;

/**
 * <pre>
 *	CAS配置类
 * </pre>
 *
 * @author nicky
 * <pre>
 * 修改记录
 *    修改后版本:     修改人:  修改日期: 2020年04月11日  修改内容:
 * </pre>
 */
@Configuration
@EnableCasClient
public class CASConfig extends CasClientConfigurerAdapter {


    private static final String CAS_SERVER_URL_LOGIN = "http://127.0.0.1:8080/cas/login";
    private static final String SERVER_NAME = "http://127.0.0.1:8082/";

    private static final String AUTHENTICATION_REDIRECT_STRATEGY_CLASS  = "org.muses.jeeplatform.oa.cas.CustomAuthticationRedirectStrategy";

    @Override
    public void configureAuthenticationFilter(FilterRegistrationBean authenticationFilter) {
        super.configureAuthenticationFilter(authenticationFilter);
        authenticationFilter.getInitParameters().put("authenticationRedirectStrategyClass",AUTHENTICATION_REDIRECT_STRATEGY_CLASS);
    }

    @Override
    public void configureValidationFilter(FilterRegistrationBean validationFilter) {
        Map<String, String> initParameters = validationFilter.getInitParameters();
        initParameters.put("encodeServiceUrl", "false");
    }

    @Bean
    public FilterRegistrationBean filterRegistrationBean(){
        FilterRegistrationBean registrationBean = new FilterRegistrationBean();
        registrationBean.setFilter(new AuthenticationFilter());
        registrationBean.addUrlPatterns("/*");
        Map<String, String> initParameters = new HashMap<String,String>(4);
        initParameters.put("casServerLoginUrl",CAS_SERVER_URL_LOGIN);
        initParameters.put("serverName",SERVER_NAME);
        initParameters.put("ignorePattern","/logoutSuccess/*");
        // 自定义重定向策略
        initParameters.put("authenticationRedirectStrategyClass", AUTHENTICATION_REDIRECT_STRATEGY_CLASS);
        registrationBean.setInitParameters(initParameters);
        registrationBean.setOrder(1);
        return registrationBean;
    }


}

访问项目时候,如果没登录过,会跳到CAS进行认证授权,授权通过才会返回主页

代码例子参考:github下载链接

详情可以参考官方文档:https://apereo.github.io/cas/5.3.x/installation/Configuration-Properties.html

优质参考博客: https://www.cnblogs.com/jpeanut/tag/CAS/ https://blog.csdn.net/anumbrella/category_7765386.html

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • SpringMVC对接CAS客户端实现单点登录手册

    业务场景:之前写过CAS服务端的例子,也对接过基于SpringBoot的CAS,不过最近项目要对接第三方的CAS实现单点登录,而我们项目是基于SpringMVC...

    SmileNicky
  • CAS 5.3.1系列之使用cas overlay搭建服务端(一)

    CAS默认是要https的链接才能登录的,不过学习的话是可以先去掉https限制,本博客介绍的是基于Cas5.3.1的,之前改过4.0,4.2.7的,详情见ht...

    SmileNicky
  • CAS单点登录系列之极速入门与实战教程(4.2.7)

    单点登录(Single sign on),英文名称缩写SSO,SSO的意思就是在多系统的环境中,登录单方系统,就可以在不用再次登录的情况下访问相关受信任的系统。...

    SmileNicky
  • 投融资汇总 | 本周(1.29-2.4)时空电动获IDG资本10亿元投资

    镁客网
  • 初试geopandas

    为了拓展python在地学的应用,一个比较流行的库geopandas,还是有必要接触的,但是接触的第一感觉就并不是太友好,对于其geometry的设定,初衷是不...

    一个有趣的灵魂W
  • GitHub 里面可以直接用 VS Code了,真香!

    新发布的 Codespaces 无疑是亮点之一,其为开发者提供了基于云端托管的完整开发环境。

    前端迷
  • GitHub 里面可以直接用 VS Code了,这次是真的香!

    新发布的 Codespaces 无疑是亮点之一,其为开发者提供了基于云端托管的完整开发环境。

    夜尽天明
  • Servlet 通过Filter拦截器解决全站编码问题

    请求 参数 public string import void 编码 问题 utf-8 request matcher

    Alone88
  • react ----- 路由懒加载的几种实现方案

    符合ECMAScript提议的import()语法,该提案与普通 import 语句或 require 函数的类似,但返回一个 Promise 对象。这意味着模...

    小蔚
  • 褪去喧嚣,AI正当时!

    从1956年“人工智能”这个词在达特茅斯会议上被首次提出,60年来历经三次浪潮终于走到落地。 人脸识别、语音识别、语音合成、自然语言理解等技术应用于新零售、智能...

    人称T客

扫码关注云+社区

领取腾讯云代金券