/
Denisitch
/
Store
Обзор
Документация
Войти
/
Denisitch
/
Store
Код
Запросы
0
Пакеты
0
Релизы
0
Аналитика
Безопасность
master
admin-server/src/main/java/com/denisitch/admin/config/SecurityBeans.java
60 строк
3 KB
Denis Osyushkin
add oauth2 login and oauth2 authorized for client
03 июн 2024, 22:06
03 июн 2024, 22:06
75f15e9
Код
Авторство
О чём код?
package com.denisitch.admin.config; import com.denisitch.admin.web.client.OAuthHttpHeadersProvider; import jakarta.annotation.Priority; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.http.HttpHeaders; import org.springframework.security.config.Customizer; import org.springframework.security.config.annotation.web.builders.HttpSecurity; import org.springframework.security.config.annotation.web.configurers.CsrfConfigurer; import org.springframework.security.config.http.SessionCreationPolicy; import org.springframework.security.oauth2.client.AuthorizedClientServiceOAuth2AuthorizedClientManager; import org.springframework.security.oauth2.client.OAuth2AuthorizedClientService; import org.springframework.security.oauth2.client.registration.ClientRegistrationRepository; import org.springframework.security.web.SecurityFilterChain; import java.util.Optional; @Configuration public class SecurityBeans { @Bean public OAuthHttpHeadersProvider oAuthHttpHeadersProvider( ClientRegistrationRepository clientRegistrationRepository, OAuth2AuthorizedClientService authorizedClientService ) { return new OAuthHttpHeadersProvider( new AuthorizedClientServiceOAuth2AuthorizedClientManager( clientRegistrationRepository, authorizedClientService ) ); } @Bean @Priority(0) public SecurityFilterChain apiSecurityFilterChain(HttpSecurity http) throws Exception { return http .securityMatcher(request -> Optional.ofNullable(request.getHeader(HttpHeaders.AUTHORIZATION)) .map(header -> header.startsWith("Bearer ")).orElse(false)) .oauth2ResourceServer(httpSecurityOAuth2ResourceServerConfigurer -> httpSecurityOAuth2ResourceServerConfigurer.jwt(Customizer.withDefaults())) .authorizeHttpRequests(authorizationManagerRequestMatcherRegistry -> authorizationManagerRequestMatcherRegistry.anyRequest().hasAuthority("SCOPE_metrics_server")) .sessionManagement(httpSecuritySessionManagementConfigurer -> httpSecuritySessionManagementConfigurer.sessionCreationPolicy(SessionCreationPolicy.STATELESS)) .csrf(CsrfConfigurer::disable) .build(); } @Bean @Priority(1) public SecurityFilterChain uiSecurityFilterChain(HttpSecurity http) throws Exception { return http .oauth2Client(Customizer.withDefaults()) .oauth2Login(Customizer.withDefaults()) .authorizeHttpRequests(authorizationManagerRequestMatcherRegistry -> authorizationManagerRequestMatcherRegistry.anyRequest().authenticated()) .build(); } }