白名单在春季项目中列出了一个ip

时间:2015-08-04 11:33:55

标签: java spring spring-security whitelist

我有一个简单的java应用程序登录。它有一个SecurityConfig类,它扩展了WebSecurityConfigurerAdapter。我已经实现了几种方法

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

在配置(WebSecurity网站)方法中,我忽略了某些网址的身份验证

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

我在这个项目中有一些服务端点。现在我需要列出一个特定的ip(我有一个字符串数组),它应该只能访问一个特定的端点。这是因为对端点的所有调用都要通过用户登录身份验证。

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

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

提前致谢

1 个答案:

答案 0 :(得分:1)

您将需要基于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)
    }
}

我希望这会有所帮助。