이번 포스팅의 목적은 왜 공식문서를 볼 줄 알고 왜 봐야 되는지에 대한 제 생각을 적은 글입니다. 블로그검색을 통해 구현한 OAuth2 이 글을 쓰기 전에는 그냥 구글에 다 나와있고 내가 이미 해놨던 정보들이 있기 때문에 OAuth2에 대해 깊게 알지 않아도 복붙해서 사용만 할 줄 안다면 내가 그 기능을 완벽히 알고있다고 판단했었습니다. 이 말도 틀린 말은 아니라고 생각합니다. 결국 기능을 사용할 수 있으면 충분하니까요. 요구사항에 맞는 자료가 존재하지 않는다면 사소한 거 하나 구현할 수 없는 제 모습을 보고 다시 하나하나 구현했습니다. 처음 구글에서 본 OAuth2 코드입니다. OAuthAttributes 이 코드를 작성할 때 그냥 이렇게 쓰면 되는 거고 이렇게 만들어서 나누면 돼 ~ 이런 식으로 구현..
Spring Security에서 토큰 검증 과정 검증 흐름 먼저 제가 작성한 코드가 어떤식으로 검증이 되는지 보겠습니다. 로그인 성공 토큰 생성 로그인 성공 -> 토큰을 생성하는 로직입니다. 토큰 검증 토큰을 검증하는 흐름을 보겠습니다. getUsername() 여기까지 로그인 후 토큰을 생성하고, 그 토큰을 검증하는 과정입니다. 이제부터 이 흐름에 왜 의문을 품었는지더 좋은 방법을 하나 하나 생각한 내용을 적겠습니다. 의문 발생 토이프로젝트를 하다가 받은 리뷰입니다. 인터넷과 강의에있는 내용을 그대로 받아들인 후 토큰 검증 과정을 구현했었는데 이러한 리뷰를 통해 왜 이렇게 해야 되는건지 고민하는 계기가 되었습니다. DB에 접근하지 않아도 User객체를 생성한다거나, 권한 정보만 들고와서 ContextH..
Springboot 3.1.0 환경에서 Spring Security로 인증 방식을 구현하던 중 FilterChain 등록 코드에서 deprecated 에러 사인이 등장했다. Spring Security 6.1.0 SpringBoot 3.1.0 버전은 Spring Security 6.1.0 버전을 dependency 한다. 람다 DSL 사용 Lambda DSL은 버전 5.2부터 Spring Security에 있으며 람다를 사용하여 HTTP 보안을 구성할 수 있습니다. HTTP 보안의 람다 구성이 이전 구성 스타일과 어떻게 비교되는지 살펴보겠습니다. 람다를 사용한 구성 (lamda DSL) @Configuration @EnableWebSecurity public class SecurityConfig { @B..
Spring Security의 사용자 비밀번호 검사 스프링 시큐리티 예제를 보며 개발하다 보면 UserDetailsService 인터페이스의 loadUserByUsername(String username)을 구현해서 사용자 정보를 DB에서 조회하고 반환한다. 하지만 비밀번호를 체크하는 코드는 없다. 그래도 잘못된 비밀번호를 입력하면 로그인에 실패한다. 내가 작성한 코드에는 없지만 어디에선가 비밀 번호 체크를 하고 있는 것이다. 비밀 번호는 어디에서 체크할까? DaoAuthenticationProvider AuthenticationManager.authenticate(Authentication)을 호출하면 스프링 시큐리티에 내장된 AuthenticationProvider의 authenticate()메서드가..