Touch ups

This commit is contained in:
Miroslav Vasilev 2024-02-05 21:09:59 +02:00
parent 932bd923d7
commit 4f9d99170a
7 changed files with 38 additions and 28 deletions

View file

@ -17,9 +17,11 @@ import org.springframework.security.oauth2.client.registration.ReactiveClientReg
import org.springframework.security.oauth2.client.web.OAuth2AuthorizationRequestCustomizers; import org.springframework.security.oauth2.client.web.OAuth2AuthorizationRequestCustomizers;
import org.springframework.security.oauth2.client.web.server.DefaultServerOAuth2AuthorizationRequestResolver; import org.springframework.security.oauth2.client.web.server.DefaultServerOAuth2AuthorizationRequestResolver;
import org.springframework.security.oauth2.client.web.server.ServerOAuth2AuthorizationRequestResolver; import org.springframework.security.oauth2.client.web.server.ServerOAuth2AuthorizationRequestResolver;
import org.springframework.security.web.authentication.HttpStatusEntryPoint;
import org.springframework.security.web.server.SecurityWebFilterChain; import org.springframework.security.web.server.SecurityWebFilterChain;
import org.springframework.security.web.server.ServerAuthenticationEntryPoint; import org.springframework.security.web.server.ServerAuthenticationEntryPoint;
import org.springframework.security.web.server.authentication.HttpStatusServerEntryPoint; import org.springframework.security.web.server.authentication.HttpStatusServerEntryPoint;
import org.springframework.security.web.server.authentication.RedirectServerAuthenticationEntryPoint;
import org.springframework.security.web.server.authentication.RedirectServerAuthenticationSuccessHandler; import org.springframework.security.web.server.authentication.RedirectServerAuthenticationSuccessHandler;
import org.springframework.session.data.redis.config.annotation.web.server.EnableRedisWebSession; import org.springframework.session.data.redis.config.annotation.web.server.EnableRedisWebSession;
import org.springframework.web.server.WebSession; import org.springframework.web.server.WebSession;
@ -47,6 +49,7 @@ public class SecurityConfiguration implements BeanClassLoaderAware {
@Bean @Bean
public SecurityWebFilterChain springSecurityFilterChain(ServerHttpSecurity http, ServerOAuth2AuthorizationRequestResolver resolver) { public SecurityWebFilterChain springSecurityFilterChain(ServerHttpSecurity http, ServerOAuth2AuthorizationRequestResolver resolver) {
http http
.httpBasic(ServerHttpSecurity.HttpBasicSpec::disable)
.csrf(ServerHttpSecurity.CsrfSpec::disable) .csrf(ServerHttpSecurity.CsrfSpec::disable)
.authorizeExchange(c -> { .authorizeExchange(c -> {
c.pathMatchers("/**").permitAll(); c.pathMatchers("/**").permitAll();
@ -93,7 +96,8 @@ public class SecurityConfiguration implements BeanClassLoaderAware {
return ex.getExchange().getSession().flatMap(WebSession::invalidate); return ex.getExchange().getSession().flatMap(WebSession::invalidate);
}); });
}); })
.exceptionHandling(e -> e.authenticationEntryPoint(new HttpStatusServerEntryPoint(HttpStatus.UNAUTHORIZED)));
return http.build(); return http.build();
} }

View file

@ -2,17 +2,9 @@ spring:
cloud: cloud:
gateway: gateway:
routes: routes:
- id: core-api
uri: ${CORE_API_URI}
order: 1
predicates:
- Path=/api/**
filters:
- RewritePath=/api/(?<segment>.*), /$\{segment}
- TokenRelay=
- id: statements-api - id: statements-api
uri: ${STATEMENTS_API_URI} uri: ${STATEMENTS_API_URI}
order: 2 order: 1
predicates: predicates:
- Path=/api/statements/** - Path=/api/statements/**
filters: filters:
@ -20,12 +12,20 @@ spring:
- TokenRelay= - TokenRelay=
- id: widgets-api - id: widgets-api
uri: ${WIDGETS_API_URI} uri: ${WIDGETS_API_URI}
order: 3 order: 2
predicates: predicates:
- Path=/api/widgets/** - Path=/api/widgets/**
filters: filters:
- RewritePath=/api/(?<segment>.*), /$\{segment} - RewritePath=/api/(?<segment>.*), /$\{segment}
- TokenRelay= - TokenRelay=
- id: core-api
uri: ${CORE_API_URI}
order: 3
predicates:
- Path=/api/**
filters:
- RewritePath=/api/(?<segment>.*), /$\{segment}
- TokenRelay=
- id: spa - id: spa
order: 4 order: 4
uri: ${FRONTEND_URI} uri: ${FRONTEND_URI}

View file

@ -26,17 +26,9 @@ spring:
set-status: set-status:
original-status-header-name: Original-Status original-status-header-name: Original-Status
routes: routes:
- id: core-api
uri: ${CORE_API_URI}
order: 1
predicates:
- Path=/api/**
filters:
- RewritePath=/api/(?<segment>.*), /$\{segment}
- TokenRelay=
- id: statements-api - id: statements-api
uri: ${STATEMENTS_API_URI} uri: ${STATEMENTS_API_URI}
order: 2 order: 1
predicates: predicates:
- Path=/api/statements/** - Path=/api/statements/**
filters: filters:
@ -44,12 +36,20 @@ spring:
- TokenRelay= - TokenRelay=
- id: widgets-api - id: widgets-api
uri: ${WIDGETS_API_URI} uri: ${WIDGETS_API_URI}
order: 3 order: 2
predicates: predicates:
- Path=/api/widgets/** - Path=/api/widgets/**
filters: filters:
- RewritePath=/api/(?<segment>.*), /$\{segment} - RewritePath=/api/(?<segment>.*), /$\{segment}
- TokenRelay= - TokenRelay=
- id: core-api
uri: ${CORE_API_URI}
order: 3
predicates:
- Path=/api/**
filters:
- RewritePath=/api/(?<segment>.*), /$\{segment}
- TokenRelay=
server: server:
ssl: ssl:

View file

@ -14,7 +14,6 @@ import org.springframework.transaction.annotation.EnableTransactionManagement;
import org.springframework.web.filter.CommonsRequestLoggingFilter; import org.springframework.web.filter.CommonsRequestLoggingFilter;
@Configuration @Configuration
@Import(CommonSwaggerConfiguration.class) @Import(CommonSecurityConfiguration.class)
@EnableTransactionManagement
public class SecurityConfiguration { public class SecurityConfiguration {
} }

View file

@ -7,7 +7,14 @@ let LEV_FORMAT = new Intl.NumberFormat('bg-BG', {
let utils = { let utils = {
performRequest: async (url, options) => { performRequest: async (url, options) => {
return await fetch(url, options).then(resp => { let opts = options ?? { headers: {} };
return await fetch(url, {
...opts,
headers: {
...opts.headers,
'X-Requested-With': 'XMLHttpRequest'
}
}).then(resp => {
if (resp.status === 401) { if (resp.status === 401) {
window.location.replace(`${window.location.origin}/oauth2/authorization/authentik`) window.location.replace(`${window.location.origin}/oauth2/authorization/authentik`)

View file

@ -1,12 +1,12 @@
package dev.mvvasilev.statements.configuration; package dev.mvvasilev.statements.configuration;
import dev.mvvasilev.common.configuration.CommonSecurityConfiguration;
import dev.mvvasilev.common.configuration.CommonSwaggerConfiguration; import dev.mvvasilev.common.configuration.CommonSwaggerConfiguration;
import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Import; import org.springframework.context.annotation.Import;
import org.springframework.transaction.annotation.EnableTransactionManagement; import org.springframework.transaction.annotation.EnableTransactionManagement;
@Configuration @Configuration
@Import(CommonSwaggerConfiguration.class) @Import(CommonSecurityConfiguration.class)
@EnableTransactionManagement
public class SecurityConfiguration { public class SecurityConfiguration {
} }

View file

@ -1,12 +1,12 @@
package dev.mvvasilev.widgets.configurations; package dev.mvvasilev.widgets.configurations;
import dev.mvvasilev.common.configuration.CommonSecurityConfiguration;
import dev.mvvasilev.common.configuration.CommonSwaggerConfiguration; import dev.mvvasilev.common.configuration.CommonSwaggerConfiguration;
import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Import; import org.springframework.context.annotation.Import;
import org.springframework.transaction.annotation.EnableTransactionManagement; import org.springframework.transaction.annotation.EnableTransactionManagement;
@Configuration @Configuration
@Import(CommonSwaggerConfiguration.class) @Import(CommonSecurityConfiguration.class)
@EnableTransactionManagement
public class SecurityConfiguration { public class SecurityConfiguration {
} }