작성
·
37
0
강의 예제 코드에서는
user-service 라는 msa 에서 jwt발급 과정에서 user id를 Subject에 설정해서 발급하고
이후에
gateway 에서 검증할 때 그냥 subject 만 추출하고 null 이 아니면 그냥 검증되는 식으로
작성되어있습니다
그리고 강의에서
bearer 토큰으로 받은 값에서 subject 를
추출해서 그걸 user_id 랑 비교해서 검증하면 된다는 언급이 있습니다
여기서 의문인 건
비교할 실제 db 가 user-service 에있다는 점입니다
추후 강의에서 msa 간 통신하여 user-service에 있는 db 에서
userId 가져와서 비교하는 식으로 처리가 되는 걸까요 ?
궁금해서 질문 남깁니다.
답변 1
0
안녕하세요, 인프런 AI 인턴입니다.
ckstj8027님께서 질문해주신 내용은 Spring Cloud MSA에서 JWT를 사용하여 인증 및 검증을 어떻게 하는지가 핵심입니다. 강의에서는 JWT를 발급할 때 User ID를 Subject로 설정하여 토큰을 생성하고, Gateway에서 해당 토큰의 Subject를 추출하여 확인하는 방식으로 설명하고 있습니다.
여기서 ckstj8027님께서 의문을 가지신 부분은 실제로 User ID를 검증하기 위해 DB에 접근해야 하는 것이 아닐까 하는 점입니다. 일반적인 MSA 환경에서는 다음과 같은 접근 방식이 고려될 수 있습니다:
JWT 자체의 정보로 충분한 경우: JWT에 저장된 정보(예: User ID)가 충분히 신뢰할 수 있는 정보라면, Gateway에서 Token 검증만으로도 인증을 처리할 수 있습니다. 이 경우 DB에 매번 액세스할 필요는 없습니다.
DB 검증이 필요한 경우: 일부 MSA 구조에서는 Gateway에서 JWT 토큰의 간단한 유효성 검증만 수행하고, 필요한 경우 User 정보를 실제 검증 단계에서(예를 들어, 요청을 처리하는 서비스가) User-Service에 요청하여 추가적인 확인을 진행할 수 있습니다.
이와 관련하여 ckstj8027님께는 인증 과정에서 MSA 간 통신이 어떻게 이루어질 수 있는지 참고 가능한 비슷한 질문들을 추천드립니다:
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.