묻고 답해요
141만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
해결됨스프링 시큐리티 완전 정복 [6.x 개정판]
REST 방식과 폼 인증 방식의 차이점과 언제 적용하는 질문입니다.
타임 리프로 페이지를 구성한다면 CSRF 토큰을 타임리프에서 자동으로 생성하기 때문에 직전 세션인 [실전 프로젝트 - 회원 인증 시스템] 강의 내용으로 스프링 시큐리티 설정이 충분하지만, 타임 리프가 아닌 자바스크립트 기반의 뷰나 리액트 등으로 페이지를 구성할 때에는 [실전 프로젝트 - 비동기 인증] 으로 스프링 시큐리티를 설정해야 되는 것으로 생각하면 될까요?그 이유는 CSRF 토큰을 자바스크립트에서는 자동으로 생성하지 않기 때문이다. 라고 이해했는데 다른 이유가 혹시 더 있을까요?
-
해결됨스프링 시큐리티 완전 정복 [6.x 개정판]
SecurityContextHolderStrategy 관련 질문
리멤버미 인증에서 doFilter 호출한 시점에서 securityConttextHolderStrategy는 요청-응답 흐름에서 SecurityContext를 어떻게 관리할 것인지 관리하는 전략인데 이것은 세션과 다르고 기본 구현체로 ThreadLocalSecurityContextHolderStrategy가 사용되어 개별 스레드 단위로 격리되어 SecurityContext가 관리되는 것으로 알고 있습니다.강의에서 이 부분을 세션에 저장되어있는지 확인하고 리멤버미 인증을 시작할 것인지 아닐 것인지 결정하는 것으로 말씀 주셨는데, 정확히는 앞에 있는 필터에서 인증을 거치고(기본적으로 세션 인증) 인증 결과를 SecurityContextHolderStrategy에 저장시킨 상태에서 인증이 됐는 지 여무를 확인하는 것을 축약해서 말씀해주신 것인지 혼동이 있어서 질문드립니다.
-
해결됨스프링 시큐리티 완전 정복 [6.x 개정판]
강의자료 오타 제보
UsernamePasswordAuthenticationFilter 설명부 이미지 GET /login 이 아니라 POST /login 같습니다!
-
해결됨스프링 시큐리티 완전 정복 [6.x 개정판]
Kotlin DSL 활용
import org.springframework.security.config.annotation.web.invoke시큐리티 5.3부터 Kotlin 환경에서 스프링 시큐리티를 사용하실 때 DSL을 지원받을 수 있습니다.공식문서에 나와있습니다.(https://docs.spring.io/spring-security/reference/servlet/configuration/kotlin.html)이 DSL을 사용한 예제 프로젝트도 제공됩니다. (https://github.com/spring-projects/spring-security-samples/tree/main/servlet/spring-boot/kotlin/hello-security) DSL 문 삽입은 IDE의 지원을 받을 수 없어서 위 import 문을 직접 작성해야합니다. @Configuration class SecurityConfig { @Bean fun securityFilterChain(http: HttpSecurity): SecurityFilterChain { http { authorizeHttpRequests { authorize("/", permitAll) authorize(anyRequest, authenticated) } formLogin {} rememberMe { } sessionManagement { sessionCreationPolicy = SessionCreationPolicy.STATELESS } } return http.build() } } 예를 들면 위와 같이 DSL의 지원을 받아 설정을 구성할 수 있습니다.람다 표현식을 작성하지 않고 설정할 수 있습니다.IDE를 통해 DSL 설정 클래스를 쭉 따라가보면 어떤 파라미터를 전달하면 될지 확인할 수 있는데 이를 참고하면 좀 더 편리하게 설정을 사용할 수 있습니다.다만 일부 설정은 제공되지 않는 것도 있어서 해당하는 부분은 Spring에서 제공되는 API 그대로 사용하셔야합니다.