В Spring Boot я создаю API, который требует аутентификации клиента OAuth для всех значимых конечных точек.
Если кто-то вызывает только URL (без пути), мы хотели бы перенаправить на корпоративный веб-сайт из приложения (сохранить все бизнес-логи c в приложении) вместо отображения неавторизованной страницы.
Я еще не нашел способ разрешить пустую строку для antMatchers, и в документах подразумевается, что пустая строка недопустима, поэтому игнорируется. У кого-нибудь есть идеи?
@Override
protected void configure(HttpSecurity http)
throws Exception {
//J-
http
.authorizeRequests()
.antMatchers(
HttpMethod.GET,
"/v1/admin/livenessHeartbeat",
"/v1/admin/readinessHeartbeat",
"/v2/api-docs",
"/swagger-resources/**",
"/swagger-ui.html**",
"/webjars/**",
"favicon.ico",
"/") // No path just base URL which will redirect
.permitAll()
.antMatchers("/v1/*").hasRole(ACCESS_ROLE)
.and()
.oauth2ResourceServer()
.accessDeniedHandler(new BearerTokenAccessDeniedHandler())
.jwt()
.jwkSetUri(AUTH_PROVIDER.getMetadata()
.toCompletableFuture()
.get()
.getJWKSetURI().toString())
.jwtAuthenticationConverter(new SSOAuthExtractor(AUTH_PROVIDER));