[Diary] Authorization과 로직(1)

Shaun.the.sheep·2025년 8월 1일

[Dairy] S.C.C TIL

목록 보기
17/22

들어가기 전

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


JWT 사용

일단 잠깐 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
일단 이렇게 존재한다.

그럼 결과는 다음과 같다.

  • claim으로 들어온 값들을 key와 value로 구분하여 받는다.
  • issuer로 발행자를 체크하고
  • issuedAt으로 발행 시간
  • expiration으로 소멸 시간

이제 다음에도 이어 가겠지만 잠깐 생각해보면 Gateway에서 처리하는 로직이 어떤게 좋을지 확인해보는것도 좋다

게이트 웨이 처리

모든 Client의 인증과 인가를 다 한번에 처리하는 것이다.

단점도 명확 장점도 명확하다.

장점은 게이트 웨이의 관리의 효율성 증가이다.
- 인증키 관리도 게이트 웨이에서 하게 된다.
- Authorization confirm도 확인 여부만 하게된다.

단점은 부하가 어마무시 하게 걸린 다는 것이다.

각 모듈 처리

게이트 웨이에서는 expiration의 date만 확인하면 된다.
그리고 각 모듈로 넘겨 각 모듈에서 진행하도록 한다.

그럼 게이트 웨이의 부하는 현저히 줄게 된다.

단, 키 변경이나 관리 포인트가 모듈의 개수와 비례하게 증가하게 된다.

위의 사항들을 확인하고 진행해보자

=> 2탄 으로

0개의 댓글