질문

현재 스펙은 nginx ingress + k8s 예정이고 springboot cloud는 쓰지 않을 예정 (메모리 절약)

한다면 인증만 Gateway에서 처리하도록 할 예정이다

  1. 인증을 nginx ingress에서 처리할때 토큰을 파싱해서 클레임(memberPrincipal 내부 정보)을 헤더에 담아서 보내는 방식이 맞는지?
  2. 내부 api는 어떻게 보안을 처리해야 하는지?

답변

<aside> <img src="/icons/thought_blue.svg" alt="/icons/thought_blue.svg" width="40px" />

인증(Authentication): JWT 유효성, 서명, 만료, issuer/audience

인가(Authorization): role/scope, 리소스 소유권 등

</aside>

<aside>

보통 MSA에서 인증/인가는 두 가지 방법으로 처리한다.

  1. 각 모듈에서 인증 인가 하는 방법 => 토큰을 그대로 가져옴
  2. 토큰 가져오지 않고, 커스텀 헤더에 정보 그대로 작성 (ex id, role, nickname등) 내부적으로 신뢰함 </aside>

Ingress는 원래 라우팅 중심이고, API Gateway는 정책 중심

Ingress(Nginx)는 기본적으로

API Gateway가 맡는 건 보통 추가로: