인증과 테넌시
인증과 테넌시는 의도적으로 결합되어 있습니다. Lumie에서는 대부분의 유의미한 백엔드 작업이 인증된 호출자와 PostgreSQL RLS에 바인딩할 수 있는 tenant ID를 둘 다 필요로 합니다. tenant 범위가 없는 identity만으로는 일반적인 read와 write를 수행할 수 없습니다.
이 페이지는 요청 context 계약을 다루는 reference 문서입니다.
소스 경로
| Path | 역할 |
|---|---|
app/src/main/java/com/lumie/app/config/SecurityConfig.java | 전역 route 보호와 filter 순서 |
modules/auth/src/main/java/com/lumie/auth/adapter/in/security/JwtAuthenticationFilter.java | end-user authentication filter |
modules/auth/src/main/java/com/lumie/auth/adapter/out/security/JwtTokenProvider.java | JWT claim 형식과 발급 |
modules/auth/src/main/java/com/lumie/auth/adapter/in/web/AuthController.java | registration, login, refresh, logout, profile endpoint |
app/src/main/java/com/lumie/app/config/internal/InternalHmacAuthFilter.java | /internal/** authentication 계약 |
libs/common/src/main/java/com/lumie/common/tenant/RequestContextFilter.java | request correlation, MDC, fallback header population |
modules/tenant/src/main/java/com/lumie/tenant/adapter/in/web/TenantController.java | anonymous public tenant lookup |
modules/homepage/src/main/java/com/lumie/homepage/application/service/HomepageQueryService.java | tenant 해석 이후의 public homepage lookup |
요청 컨텍스트 흐름
최종 사용자 인증 계약
주요 HTTP 인터페이스
| Flow | Endpoints | Notes |
|---|---|---|
| Registration and login | POST /v1/register, POST /v1/register/owner, POST /v1/login | access token, refresh token, user payload를 발급 |
| Session lifecycle | POST /v1/refresh, POST /v1/logout, POST /v1/logout-all, GET/DELETE /v1/me/sessions... | refresh는 cookie에서 refresh token을 읽음 |
| Profile | GET/PATCH /v1/me, POST /v1/me/password, PATCH /v1/me/avatar | 인증된 user context 필요 |
| OAuth2 | GET /v1/oauth2/{provider}/authorize, GET /v1/oauth2/{provider}/callback | Google, Kakao, Naver |