본문 바로가기

Today I Learned

프로젝트 발표

게이트웨이 서버가 하는 일

 

1. 라우팅: 모든 요청시 jwt를 헤더로 받아서 jwt 분석 후 인증서버 또는 모노서버로 라우팅

1-0: 라우팅시 header에 userid, role을 포함해서 인증서버 또는 모노서버로 보낸다

 

  1. jwt 토큰 검증
  • 블랙리스트 토큰 체크

블랙리스트를 체크를 먼저하고 토큰 검증을 시작한다

 

  • 토큰 검증

권한 체크

 

2. redis권한 조회: jwt에 있는 userid, role이 레디스에 있는지 검색

2-0. role이 CUSTOMER면 권한 체크 안한다. 그외 권한은 레디스에서 권한 체크를 한다.

2-1: 레디스에 있으면 요청한 url로 라우팅한다

2-2: 레디스가 없으면 인증서버로 해당 userid의 role 업데이트 요청을 보낸다.

2-2-1: 다시 레디스 조회를 해서 값이 있으면 원래 요청 url로 라우팅한다

2-2-2: 다시 레디스 조회를 해서 값이 없으면 권한이 없다는 에러를 보낸다.

 

  1. 로그인 체크

로그인, 회원가입은 게이트웨이에서 인증을 필터 적용 안함

바로 인증서버로 로그인 보냄

3-1. 로그인 시, 게이트웨이가 헤더에서 jwt 파싱함, jwt가 유효하면 인증서버 안옴

3-2. 로그인 시, 게이트웨이가 헤더에서 jwt 파싱함, jwt가 안 유효하면 인증서버에 로그인 요청

 

  1. 로그아웃
  • 유효한 jwt 요청인지 확인
  • 인증서버로 로그아웃 요청한다

 

게이트웨이 필요한 연결

redis: 값을 받아야하니 Redis 연결 필요

jwt: jwt 검증해야함

 

게이트웨이 서버  구현

필터로 jwt 검증 (회원가입, 로그인은 안받는다)

 

 

인증 서버가 하는 일

 

jwt 토큰이 없는 상태

  1. 로그인 요청
  • email과 비밀번호가 일치하는지 확인
  • 일치하면 토큰을 발행한다
  • 토큰을 쿠키에 담는다, 게이트웨이 서버로 보낸다, 게이트웨이 서버는 유저에게 jwt 토큰을 준다

 

  1. 회원가입
  • 게이트웨이 서버에서 모노리틱서버로 유저를 생성한다, 
  • 모노리틱 서버에서 인증서버로 redis 요청을 한다.
  • 인증서버에서는 모노리틱서버에서 요청한 userId와 role을 추가한다

 

  1. jwt 검증: 게이트웨이에서 한다, 인증서버에서는 jwt 검증 안함
  2. redis(userid, role) 업데이트, 삭제
  3. 로그아웃
  • 레디스에 블랙리스트jwt 을 넣는다
  • 세션은 안쓰니 세션 제거는 필요없다
  • 클라이언트에서 jwt 토큰 쿠키 삭제

 

인증 서버 필요한 연결

redis: 값 세팅, 수정

jwt: jwt 생성

 

 

인증 서버  구현

컨트롤로 요청을 처리한다

로그인 처리: 쿠키로 jwt응답

회원가입: redis 추가

'Today I Learned' 카테고리의 다른 글

멀티모듈 프로젝트 설정  (0) 2024.09.12
쿠팡 프로젝트를 설계하면서..  (0) 2024.09.05
프로젝트 시작  (0) 2024.08.23
API 설계 원칙  (0) 2024.08.20
Redis, Spring  (0) 2024.08.07