인증 & 멀티테넌시
JWT 인증 플로우
토큰 추출 순서
JwtAuthenticationFilter는 다음 순서로 JWT를 찾습니다:
Authorization: Bearer <token>헤더lumie_access_token쿠키 (폴백)
JWT Claims 구조
{
"sub": "28",
"tenant_slug": "inst-c704d223",
"tenant_id": 18,
"role": "OWNER",
"type": "access",
"iss": "lumie-auth-svc",
"iat": 1775313347,
"exp": 1775316947,
"jti": "a022ead2-a80e-4091-82ea-1023b9c51560"
}
토큰 검증 단계
- 서명 확인: HMAC-SHA256 (
JWT_SECRET_KEY) - 만료 확인:
expclaim - 블랙리스트 확인: Redis에서 JTI 조회 (로그아웃된 토큰 차단)
- 컨텍스트 설정:
TenantContextHolder.setTenant+setTenantId,UserContextHolder,SecurityContext
중요: setTenant(slug)만 설정하면 RLS 정책이 행을 숨깁니다. setTenantId도 반드시 호출해야 합니다.