将 spring 项目中的 ip 列入白名单

White-listing an ip in spring project

我有一个简单的 java 应用程序需要登录。它有一个扩展 WebSecurityConfigurerAdapter 的 SecurityConfig class。我在那里实施了几种方法

void configure(WebSecurity web)
void configure(HttpSecurity http)

在 configure(WebSecurity web) 方法中,我忽略了某些 URL 的

的身份验证
public void configure(WebSecurity web) throws Exception {
    web
    .ignoring()
            .antMatchers(HttpMethod.POST, "/examplePattern");
}

我在这个 project.Now 中有一些服务端点我需要将某个 ip(我有一个字符串数组)列入白名单,它应该只能访问一个特定的端点。这是因为对端点的所有调用都经过用户登录验证。

基本上我需要的是,如果从特定 IP 调用某个端点,请求应该到达控制器,无需身份验证

我对这个领域很陌生,所以如果你有解决这个问题的方法,请告诉我。

提前致谢

您需要如下基于 IP 地址的身份验证提供程序:

@Service 
public class IPAddressBasedAuthenticationProvider implements AuthenticationProvider {


     @Autowired
     private HttpServletRequest request;

     @Override
     public Authentication authenticate(Authentication authentication) throws AuthenticationException {

         String ipAddress = request.getRemoteAddr();
         // Check against your array.
         //return created authentication object (if user provided valid credentials)
    }
}

希望对您有所帮助。