Class WhiteListFilter

java.lang.Object
tech.riemann.nif.starter.white.WhiteListFilter
All Implemented Interfaces:
jakarta.servlet.Filter

public class WhiteListFilter extends Object implements jakarta.servlet.Filter
白名单过滤器

实现Servlet Filter接口,用于限制特定URL的访问IP

主要功能: 1. 根据配置的白名单规则过滤请求 2. 支持CIDR格式的IP范围匹配 3. 对不在白名单范围内的IP返回401未授权

使用场景: - 限制敏感接口(如Actuator监控接口)的访问IP - 保护内部API不被外部访问 - 实现IP级别的访问控制

配置示例:

nif:
  white:
    list:
      - url: /actuator/**
        cidr: 192.168.1.0/24,10.0.0.0/8
      - url: /admin/**
        cidr: 172.16.0.0/16
Author:
Kerbores(kerbores@riemann.tech)
  • Constructor Summary

    Constructors
    Constructor
    Description
     
  • Method Summary

    Modifier and Type
    Method
    Description
    void
    过滤器销毁方法
    void
    doFilter(jakarta.servlet.ServletRequest srequest, jakarta.servlet.ServletResponse sresponse, jakarta.servlet.FilterChain chain)
    执行过滤逻辑
    void
    init(jakarta.servlet.FilterConfig filterConfig)
    过滤器初始化方法

    Methods inherited from class Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
  • Constructor Details

    • WhiteListFilter

      public WhiteListFilter()
  • Method Details

    • init

      public void init(jakarta.servlet.FilterConfig filterConfig) throws jakarta.servlet.ServletException
      过滤器初始化方法
      Specified by:
      init in interface jakarta.servlet.Filter
      Parameters:
      filterConfig - 过滤器配置
      Throws:
      jakarta.servlet.ServletException - 初始化失败时抛出
    • doFilter

      public void doFilter(jakarta.servlet.ServletRequest srequest, jakarta.servlet.ServletResponse sresponse, jakarta.servlet.FilterChain chain) throws IOException, jakarta.servlet.ServletException
      执行过滤逻辑

      处理流程: 1. 获取请求IP地址 2. 获取请求URL 3. 匹配白名单规则 4. 如果URL匹配但IP不在白名单内,返回401 5. 否则继续过滤器链

      Specified by:
      doFilter in interface jakarta.servlet.Filter
      Parameters:
      srequest - Servlet请求
      sresponse - Servlet响应
      chain - 过滤器链
      Throws:
      IOException - IO异常
      jakarta.servlet.ServletException - Servlet异常
    • destroy

      public void destroy()
      过滤器销毁方法
      Specified by:
      destroy in interface jakarta.servlet.Filter