그간 항상 궁금했던 부분이 이제 조금씩 풀리는 거 같아 기분은 좋아진다.
쿠키의 사용성이나 세션의 목적 그리고 토큰 복호화 같은 내용들..
항상 응용프로그래밍을 하면서 처리하는 로직을 스스로 생각해보곤 했는데

일단 잠깐 JWT의 빌더 패턴을 사용하여 값을 반환하는 함수를 보고 가보자
return Jwts.builder()
.claim("user_id", user_id)
.claim("role", "ADMIN")
.issuer(issuer) // 발급자 notice
.issuedAt(new Date(System.currentTimeMillis()))// 발급 시간
.expiration(new Date(System.currentTimeMillis() + accessExpiration)) // 발급시간에서 설정 값 중 지연 시간 더한 값
.signWith(secretKey, SignatureAlgorithm.HS512)
.compact();
위의 소스를 보면
- claim
- issuer
- issued At
- expiration
- signWith
일단 이렇게 존재한다.
그럼 결과는 다음과 같다.
이제 다음에도 이어 가겠지만 잠깐 생각해보면 Gateway에서 처리하는 로직이 어떤게 좋을지 확인해보는것도 좋다
모든 Client의 인증과 인가를 다 한번에 처리하는 것이다.
단점도 명확 장점도 명확하다.
장점은 게이트 웨이의 관리의 효율성 증가이다.
- 인증키 관리도 게이트 웨이에서 하게 된다.
- Authorization confirm도 확인 여부만 하게된다.
단점은 부하가 어마무시 하게 걸린 다는 것이다.
게이트 웨이에서는 expiration의 date만 확인하면 된다.
그리고 각 모듈로 넘겨 각 모듈에서 진행하도록 한다.
그럼 게이트 웨이의 부하는 현저히 줄게 된다.
단, 키 변경이나 관리 포인트가 모듈의 개수와 비례하게 증가하게 된다.
위의 사항들을 확인하고 진행해보자
=> 2탄 으로