cas SSO单点登录相关内容

本文介绍了在系统集成CAS SSO单点登录时遇到的挑战,即因用户系统过多导致web.xml配置复杂。通过将所有登录请求集中到一个统一的过滤器,从properties文件读取初始化参数,简化了配置。文中分享了阅读CAS源码的心得,并展示了如何改写代码,包括在doPost方法中进行初始化和过滤操作,以及如何模仿过滤器功能实现ticket校验和服务器认证。
摘要由CSDN通过智能技术生成

小记:

        在做一套系统,准备接入集成登录。但是该系统对接的用户系统过多,所以要给每个用户系统在web.xml中配置相应的过滤器,导致web.xml过于冗杂庞大,不利于管理。解决方案:给所有用户的登录请求配置成同一个登录请求,在web.xml里配置一套统一的过滤器,不配置init-param初始化参数,将初始化参数配置到用户各自的properties文件中,

例:casServerUrlPrefix=cas服务认证ip或域名

serverName=客户端ip或域名

encoding=UTF-8

casServerLoginUrl=cas服务认证ip或域名/login

然后阅读源码改写其获取init-param的方法,增加从properties读取文件的方式。以下是基于cas-client-core-3.2.1.jar包的获取初始化参数的源码

.

protected final String getPropertyFromInitParams(FilterConfig filterConfig,	String propertyName, String defaultValue) {
        // 此处是从properties获取初始化参数
		Properties prop = FileTools.readProperties("DBConfig_"	+ Formater.ntrim(FileTools.readProperties("SystemConfig.properties").getProperty("UnitCode")) + ".properties");
		String value0 = prop.getProperty(propertyName);
		if (CommonUtils.isNotBlank(value0)) {
			log.info((new StringBuilder()).append("Property [").append(propertyName).append("] loaded from Properties.getProperty with value [").append(value0).append("]").toString());
			return value0;
		}
        // 此处是从filterConfig获取初始化参数
		String value1 = filterConfig.getInitParameter(propertyName);
		if (CommonUtils.isNotBlank(value1)) {
			log.info((new StringBuilder()).append("Property [").append(propertyName).append("] loaded from FilterConfig.getInitParameter with value [").append(value1).append("]").toString());
			return value1;
		}
        // 此处是从ServletContext获取初始化参数
		String value2 = filterConfig.getServletContext().getInitParameter(
				propertyName);
		if (CommonUtils.isNotBlank(value2)) {
			log.info((new StringBuilder()).append("Property [").append(propertyName).append("] loaded from ServletContext.getInitParameter w
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值