- 기존의 토큰 방식 인증은 다이어그램에 표시된 것처럼 토큰은 이후의 모든 서비스 호출에 사용
- 서비스를 받기 위해서는 토큰의 유효성을 확인하여 세부 정보를 쿼리
- 참조에 의한 호출(By Reference) 형태로 모든 서비스는 항상 상호 작용할 때 다시 접속해야 함
Microservice With JWT
- JWT 와 같이 값에 의한 호출이 가능한 토큰이 필요
- 토큰이 필요한 모든 정보를 포함하고 있어 참조(적어도 인증 및 권한 부여를 위해)가 필요없기 때문에 마이크로서비스 자체에서 유효성을 검증해야 함
JWT Process
- 사용자가 id와 password를 입력하여 로그인을 시도
- 서버는 요청을 확인하고 secret key를 통해 Access token을 발급
- JWT 토큰을 클라이언트에 전달
- 클라이언트에서 API 을 요청할때 클라이언트가 Authorization header에 Access token을 담아서 보냄
- 서버는 JWT Signature를 체크하고 Payload로부터 사용자 정보를 확인해 데이터를 반환
- 클라이언트의 로그인 정보를 서버 메모리에 저장하지 않기 때문에 토큰기반 인증 메커니즘을 제공
- 인증이 필요한 경로에 접근할 때 서버 측은 Authorization 헤더에 유효한 JWT 또는 존재하는지 확인
- JWT에는 필요한 모든 정보를 토큰에 포함하기 때문에 데이터베이스과 - 같은 서버와의 커뮤니케이션 오버 헤드를 최소화 할 수 있음
Cross-Origin Resource Sharing (CORS)는 쿠키를 사용하지 않기 때문에 JWT를 채용 한 인증 메커니즘은 두 도메인에서 API를 제공하더라도 문제가 발생하지 않음
- 처음 사용자를 등록할 때 Access token과 Refresh token이 모두 발급되어야 함