spring security 3

spring boot 사이드 프로젝트 : authenticate에서 발생하는 '자격 증명에 실패하였습니다' 오류 해결

프로젝트 중 로그인 관련해서 마주친 오류에 대한 내용 정리입니다.   마주친 오류는 다음과 같습니다.     해당 오류가 발생한 원인 발생한 원인은 로그인 로직 수정 때문이었습니다.  수정 전 로그인 방식- 이메일, 비밀번호 입력해서 로그인  수정 후 로그인 방식- 아이디, 비밀번호 입력해서 로그인      오류 발생 위치   기존 로그인 과정 코드에서, 이슈가 발생한 부분은 다음과 같습니다. Authentication authentication = authenticationManagerBuilder.getObject().authenticate(usernamePasswordAuthenticationToken);   UsernamePasswordAuthenticationToken으로 생성한 토큰을 넘겨 권..

Project/9uin 2024.04.02

spring security : jwt를 이용한 로그인 구현[2]

이전 과정을 거쳤다면 다음으로 accessDeniedHandler와 authenticationEntryPoint를 커스터마이징하는 것이다. 기본적으로 제공되지만 인증, 인가가 실패했을 때 서버와 클라이언트에서 더 명확하게 판단할 필요가 있었기에 직접 작성해야했다. 먼저 CustomAccessDeniedHandler이다. CustomAccessDeniedHandler.java @Component public class CustomAccessDeniedHandler implements AccessDeniedHandler { private final Logger log = LoggerFactory.getLogger(CustomAccessDeniedHandler.class); @Override public vo..

spring security : jwt를 이용한 로그인 구현[1]

프로젝트를 하면서, 로그인을 구현해야하는 단계에 왔을 때, sns로그인을 이용해 간단하게 넘길지 아니면 직접 구현할지 팀원과 의논했다. spring security는 강의에서도 생각보다 자세하게 다루지 않아, 깊게 공부하려면 아예 따로 spring security강의를 찾거나 레퍼런스를 뒤지면서 처음부터 공부해야했다. 그래도 이왕 하는 김에, 처음부터 머리박으면서 구현해보는게 좋겠다는 생각으로 뛰어들었다. 로그인을 구현할 때, 먼저 세션과 토큰 방식 중 선택해야했다. 두 방식의 차이점은 크게 보면 세션은 유저 정보가 서버에 저장되고, 토큰은 유저 정보를 클라이언트에서 보낸다는 점이다. 우리는 토큰 방식을 선택했는데, 이는 다음과 같은 이유에서 였다. 1. 세션같은 경우, 유저 정보를 서버가 저장한다. 유..