이번에 두 번째 프로젝트인 AI B2B 프로젝트를 진행하면서, Gateway에서 사용자 인증 및 인가 처리를 구현하게 되었다. 나는 기존에 회원가입과 로그인을 구현할 때 사용하던 방식을 그대로 적용하기로 했다. 1.1 각 MSA 서비스로 사용자 인증 정보가 전달되지 않는 문제그래서 Gateway에서 JWT 토큰을 헤더에서 추출한 뒤, 이를 검증하고 사용자 정보를 `SecurityContextHolder`에 저장하는 방식으로 접근했다. 처음에는 이 방법이 잘 작동할 것이라고 생각했지만, MSA 아키텍처 환경에서 문제가 발생했다. 각 서비스 간에 사용자 정보가 공유되지 않는 상황이 발생한 것이다.일일이 로그를 통해 하나씩 확인해 본 결과, Gateway에서 `SecurityContextHolder`에 저장..
Spring Security를 공부하다가!!도저히 정리를 안 하고는 이해가 안 될 것 같아서 블로그에 정리를 해 보려 한다. 먼저 build.gradle에 security 디펜던시 추가를 해준다.물론, JWT token을 사용할 것이기에 JWT 종속성도 추가해 준다. JWT 사용 흐름 Client 가 username, password로 로그인 성공 시서버에서 "로그인 정보" → JWT로 암호화 (Secret Key 사용)JWT를 Client 응답 Header에 전달응답 Header 에 아래 형태로 JWT 전달ex) **Authorization: Bearer** eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJzcGFydGEiLCJVU0VSTkFNRSI6Iuult..