포트번호: 8000
→ 회원 정보나 권한을 검증하고, JWT Token 재발급 기능을 수행합니다.
→ 각 서비스에 접근 시 포트번호를 지정하지 않더라도 APIGateway의 포트번호를 알고 있으면 서비스 구분 상관 없이 모든 백엔드에 접근할 수 있습니다.
모든 백엔드 요청은 원칙적으로 APIGateway를 거쳐야 합니다.
→ 단, 개발간 디버깅이 필요한 경우는 각 BE에 지정된 포트번호로 직접 접근해도 됩니다.
*Filter.class
- 권한이 필요한 BackEnd 서비스에 접근하기 전 검증을 위해 반드시 거쳐야 하는 클래스입니다.
- 회원에게만 허용된 기능인 경우 UserAuthenticationFilter를, 영양사(매니저)에게만 허용된 기능인 경우 ManagerAuthenticationFilter를 거쳐야 합니다.
- 각 서비스 Path나 요청 방식 별 Filter를 거칠지 말지 여부는 Gateway 속성 파일(.yml/.properties)에 지정할 수 있습니다.
RefreshToken / RefreshTokenRepository
- AccessToken이 만료되었을 때, 토큰 재발급을 위해 사용자 정보를 자동으로 불러오거나 현재 로그인 세션이 유효한 세션인지 검증하는 용도로 사용합니다.
- RefreshToken에는 사용자 ID가 담겨있지 않으며, 유효 시간 정보만 담겨있습니다.
- 사용자가 가지고 있는 RefreshToken과 Repository(DB)에 있는 토큰 정보가 일치하는지 여부로 해당 사용자의 현재 세션이 유효한 세션인지 여부를 확인할 수 있습니다.
(가장 최근에 로그인한 토큰 정보만 DB에 있기 때문에 일치하지 않는다면 유효하지 않은 세션(ex. 다른 기기에서 로그인)으로 취급할 수 있습니다.)
JwtTokenProvider
- requestHeader에서 AccessToken, RefreshToken을 추출하거나 토큰의 재발급, RefreshToken을 기반으로 회원 ID를 DB에서 검색, 토큰의 만료 여부 검사를 수행합니다.