CAS 单点登录,用户登录次数、时间、ip限制登录

本文介绍了如何在CAS 3.5中实现单点登录的用户登录次数、时间及IP限制。通过修改配置文件、创建日志表并调整日志审计功能,实现了在一定时间内超过指定次数错误登录后用户被锁定的功能。详细步骤包括新建配置文件、修改部署配置、创建日志表、调整jar包内容,并指出了现有方案的时间限制部分尚待优化。
摘要由CSDN通过智能技术生成

最近有需求需要对单点登录(cas3.5),用户次数和时间进行限制,例如ghf用户在1分钟内密码错误次数超过三次禁止登录,锁定1分钟,网上很多说配置throttleInterceptor,但最后发现是对频率的限制,以下是参数解释:

thresholdRate = (double) failureThreshold / (double) failureRangeInSeconds
           failureRangeInSeconds 失败范围时间 :多少秒内失败算一次;例如10,表示 10秒为一个周期,这个周期内失败次数累加,超过10秒,重新开始;同时也表示锁定时间。
总结来说即在一秒内用户错误登录的频率大于failureThreshold/failureRangeInSeconds时候,就会被阻止。显然根本实现不了需求,看到有文章说使用日志审计功能可以,特意进行了修改,基本完成需求,仍然有小问题,有时间优化以下吧!

参考文章:https://blog.csdn.net/zhurhyme/article/details/37535697

总体思路是,用户登录日志插入CAS_LOG表中,用户每登录一次就记录一条数据,登录成功失败记录信息不一致,在程序内部查询最近几分钟(例如1分钟)内几(例如3次)次登录失败的次数,超过规定次数跳转到提示页面。修改后时间、次数、表名都可以配置。因为cas默认日志审计默认是COM_AUDIT_TRAIL表,不符合公司项目默认建表规范,需要修改。

以下是修改过程:

1.新建WEB-INF/spring-configuration/throttleInterceptorTrigger.xml文件

注释第一部分是在内存中进行限制的方法,不满足需求,第二部分是cas原生的日志审计功能,需要修改。最后是代码部分是真正的配置信息,注意红色部分。

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p"
       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd">

    <!--failureThreshold/failureRangeInSeconds
    thresholdRate = (double) failureThreshold / (double) failureRangeInSeconds
    failureRangeInSeconds     失败范围时间  :多少秒内失败算一次;例如10,表示 10秒为一个周期,这个周期内失败次数累加,超过10秒,重新开始;同时也表示锁定时间。
     即在一秒内用户错误登录的频率大于failureThreshold/failureRangeInSeconds时候,就会被阻止
    1000.0 / (当前时间.getTime() - 上次登录时间.getTime())
    警告语句:Throttling submission from 127.0.0.1.  More than 2 failed login attempts within 300 seconds.
    -->
    <!--<bean id="throttleInterceptor"-->
          <!--class="org.jasig.cas.web.support.InMemoryThrottledSubmissionByIpAddressAndUsernameHandlerInterceptorAdapter"-->
          <!--p:failureRangeInSeconds="180"-->
          <!--p:failureThreshold="3" />-->

    <!--<bean id="throttleInterceptor" class="org.jasig.cas.web.support.InspektrThrottledSubmissionByIpAddressAndUsernameHandlerInterceptorAdapter"-->
          <!--p:failureRangeInSeconds="30"-->
          <!--p:failureThreshold="3">-->
        <!--<constructor-arg index="0" ref="auditTrailManager" />-->
        <!--<constructor-arg index="1" ref="dataSource" />-->
    <!--</bean>-->

    <!--failureRangeInSeconds  多长时间内错误,这个时代段内的错误次数会进行统计,单位秒
      failureThreshold  允许失败次数,、即超多规定次数锁定,禁止同ip用户同用户登录。
      -->
    <bean id="throttleInterceptor" class="org.jasig.cas.web.support.MyInspektrThrottledSubmissionByIpAddressAndUsernameHandlerInterceptorAdapter"
          p:failureRangeInSeconds="60"
          p:failureThreshold="3"
          p:tableName="CAS_LOG">
        <constructor-arg index="0" ref="auditTrailManager" />
        <constructor-arg index="1" ref="dataSource" />
    </bean>
</beans>
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值