소개
게시글
질문&답변
2024.07.20
스프링 시큐리티 최신버전 코드 있을까요?
지금은 github 소스를 참고해도 안되네요.springboot 3.3.0, security-core 6.3.0제가 설정한 방법 공유합니다.혹시나 도움이 될까 싶어 올려요.(2024-07-21) AuthenticationFilter 추가 시 userService 관련하여 순환참조 오류를 해결한 소스입니다. @Slf4j @Configuration @EnableWebSecurity @RequiredArgsConstructor public class WebSecurity { private final Environment env; @Bean public SecurityFilterChain filterChain(HttpSecurity http, AuthenticationManager authenticationManager, UserService userService) throws Exception { http.csrf(AbstractHttpConfigurer::disable) .authorizeHttpRequests(authorize -> authorize.requestMatchers("/users/**").permitAll() .requestMatchers("/actuator/**").permitAll() .requestMatchers("/health-check/**").permitAll() .requestMatchers("/error/**").permitAll() .requestMatchers("/**").access((authentication, request) -> { String clientIp = request.getRequest().getRemoteAddr(); log.debug("client ip is = {}", clientIp); // 허용된 IP 리스트 String[] allowedIps = {"192.168.35.194", "192.168.35.195", "192.168.35.196"}; // IP가 허용된 리스트에 포함되어 있는지 확인 boolean isAllowed = Arrays.asList(allowedIps).contains(clientIp); return new AuthorizationDecision(isAllowed); }) ) .authenticationManager(authenticationManager) // 사용자 세션 저장하지 않음 .sessionManagement(configurer -> configurer.sessionCreationPolicy(SessionCreationPolicy.STATELESS)) // 응답 헤더에 X-Frame-Options 추가 - 클릭재킹 공격 방어 - 동일 출처만 로드 가능. .headers(headers -> headers.frameOptions(HeadersConfigurer.FrameOptionsConfig::sameOrigin)) .addFilter(customAuthenticationFilter(authenticationManager, userService)); return http.build(); } /** * authenticationManager bean 생성 * @param http HttpSecurity * @return authenticationManager bean */ @Bean public AuthenticationManager authenticationManager(HttpSecurity http, UserService userService, BCryptPasswordEncoder passwordEncoder) throws Exception { AuthenticationManagerBuilder authenticationManagerBuilder = http.getSharedObject(AuthenticationManagerBuilder.class); authenticationManagerBuilder.userDetailsService(userService).passwordEncoder(passwordEncoder); return authenticationManagerBuilder.build(); } /** * customAuthenticationFilter bean 생성 * @return customAuthenticationFilter bean */ @Bean public CustomAuthenticationFilter customAuthenticationFilter(AuthenticationManager authenticationManager, UserService userService) { return new CustomAuthenticationFilter(authenticationManager, userService, env); } /** * 비밀번호 암호화 모듈 * @return 암호화 bean */ @Bean public BCryptPasswordEncoder passwordEncoder() { return new BCryptPasswordEncoder(); } }
- 0
- 7
- 1.9K
질문&답변
2024.06.08
"mvn spring-boot:run"은 구동에 문제없는데, 옵션을 주면 Build Fail 나는 원인을 알 수 있을까요?
윈도우 powerShell에서는 하이픈(-)을 사용할 때 백틱(`) 또는 작은 따옴표('')를 사용하여 escape 처리를 해주어야 합니다.아래 명령어를 사용하시면 파워쉘에서도 실행 가능합니다.mvn spring-boot:run `-Dspring-boot.run.jvmArguments='-Dserver.port=9003'자세히 보면 위 로그에 -Dspring-boot가 잘린 것을 볼 수 있네요.
- 0
- 7
- 1.3K