Spring Boot и azure B2C — API может быть доступен с использованием аутентификации или определенного IP-адреса.
У меня есть приложение, которое использует аутентификацию для использования API, я хотел бы, чтобы запросы от определенных служб (могут быть IP-адреса) могли получить доступ к API без аутентификации.
См. ниже класс WebSecurityConfiguration:
@EnableWebSecurity
@EnableGlobalMethodSecurity(prePostEnabled = true)
public class WebSecurityConfiguration extends WebSecurityConfigurerAdapter {
@Override
protected void configure(HttpSecurity http) throws Exception {
http.authorizeRequests((requests) -> requests.antMatchers("/**").authenticated()).oauth2ResourceServer()
.jwt()
.jwtAuthenticationConverter(new AadJwtBearerTokenAuthenticationConverter());
}
@Override
public void configure(WebSecurity web) throws Exception {
web.ignoring().antMatchers("/v3/api-docs/**",
"/configuration/ui",
"/swagger-resources/**",
"/configuration/security",
"/swagger-ui.html",
"/swagger-ui/**",
"/webjars/**"
);
web.ignoring().antMatchers(HttpMethod.OPTIONS,"/**" );
}
}
Обновление 1:
Я также пробовал это без везения:
@Override
protected void configure(HttpSecurity http) throws Exception {
http.authorizeRequests((requests) ->
requests.anyRequest().access("isAuthenticated() or hasIpAddress('127.0.0.1')")).oauth2ResourceServer()
.jwt()
.jwtAuthenticationConverter(new AadJwtBearerTokenAuthenticationConverter());
}