我有一个简单的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调用某个端点,请求应该到达控制器,而不进行身份验证
我对这个领域很新,所以如果你有解决这个问题的方法,请告诉我。
提前致谢
答案 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)
}
}
我希望这会有所帮助。