fix security configuration
All checks were successful
ci/woodpecker/push/woodpecker Pipeline was successful

This commit is contained in:
dmitriy.churmeev
2026-03-29 13:34:31 +03:00
parent fc1357fdc8
commit fe2ad86d0e

View File

@@ -9,6 +9,8 @@ import org.springframework.security.config.annotation.web.configuration.EnableWe
import org.springframework.security.config.annotation.web.configurers.CsrfConfigurer
import org.springframework.security.config.annotation.web.configurers.SessionManagementConfigurer
import org.springframework.security.config.http.SessionCreationPolicy
import org.springframework.security.oauth2.server.resource.authentication.JwtAuthenticationConverter
import org.springframework.security.oauth2.server.resource.authentication.JwtGrantedAuthoritiesConverter
import org.springframework.security.web.SecurityFilterChain
@@ -23,8 +25,12 @@ class WebSecurityConfig () {
http.authorizeHttpRequests(Customizer { auth ->
auth.anyRequest().authenticated() })
.oauth2ResourceServer(Customizer { oauth2 ->
oauth2!!.jwt(Customizer.withDefaults())
}) // ← проверяем JWT токен
// oauth2!!.jwt(Customizer.withDefaults())
// добавляем конвертер для извлечения ролей
oauth2.jwt { jwt ->
jwt.jwtAuthenticationConverter(jwtAuthenticationConverter())
}
}) // проверка JWT токен
.sessionManagement(Customizer { session: SessionManagementConfigurer<HttpSecurity?>? ->
session!!.sessionCreationPolicy(SessionCreationPolicy.STATELESS)
}) // без сессий
@@ -33,4 +39,17 @@ class WebSecurityConfig () {
return http.build()
}
// Конвертер JWT Authentication (извлекает роли из токена)
private fun jwtAuthenticationConverter(): JwtAuthenticationConverter {
val converter = JwtAuthenticationConverter()
// Извлекаем роли из поля realm_access.roles
val authoritiesExtractor = JwtGrantedAuthoritiesConverter()
authoritiesExtractor.setAuthoritiesClaimName("realm_access.roles") // где лежат роли
authoritiesExtractor.setAuthorityPrefix("ROLE_") // добавляем префикс ROLE_
converter.setJwtGrantedAuthoritiesConverter(authoritiesExtractor)
return converter
}
}