인증
LinkOStar는 4가지 자격증명을 받습니다. 각각 다른 경로에 적용되며, 한 요청이 여러 자격을 동시에 들고 와도 우선순위에 따라 하나만 활성화됩니다.
한눈에 정리
| 자격증명 | 헤더 | 적용 경로 | 발급 |
|---|---|---|---|
| X-API-Key | X-API-Key: <key> | /tenant/** | Supplier 운영팀 발급. Supplier 시크릿. |
| sdx-oauth JWT | Authorization: Bearer <jwt> | /tenant/** · /app/** · /platform/** | sdx-oauth 로그인 흐름 |
| Hub Bearer | Authorization: Bearer <token> | /v1/hubs/** (claim 제외) | POST /v1/hubs/claim 응답 |
| X-Tenant-UUID | X-Tenant-UUID: <uuid> | /tenant/** 보조 | supplier_uuid 와 동일 (1:1) |
1. X-API-Key (Supplier ↔ BFF)
Supplier BFF가 LinkOStar를 호출할 때 표준. End-user 브라우저에 노출하지 마세요— 키가 새면 다른 supplier 데이터까지 모두 보입니다.
curl https://api.linkostar.sandevaux.com/tenant/hubs \
-H "X-API-Key: ${LINKOSTAR_API_KEY}" \
-H "X-Tenant-UUID: ${LINKOSTAR_TENANT_UUID}"2. sdx-oauth JWT (Operator / End-user)
LinkOStar 운영자 콘솔과 LinkOStar 모바일 앱은 sdx-oauth 로 사용자 인증을 받고 JWT를 받습니다. 이 JWT를 그대로 LinkOStar에 보냅니다.
- JWT는 사용자가 누구인지를 알려줍니다.
- X-Tenant-UUID는 어떤 tenant scope로 동작할지 알려줍니다.
- 두 헤더를 같이 보내야
/tenant/**가 정상 동작합니다.
sdx-oauth 발급/갱신 흐름은 sdx 측 문서 참조 (PKCE + refresh_token).
3. Hub Bearer (Hub-Agent ↔ LinkOStar)
Pi에서 동작하는 hub-agent가 /v1/hubs/{uuid}/telemetry 같은 endpoint를 호출할 때 씁니다. 발급 흐름:
- Pi 부팅 → boot config 의
claim_code로POST /v1/hubs/claim - 응답으로
accessToken+refreshToken+hubUuid수령 - 이후 모든
/v1/hubs/**요청에Authorization: Bearer <accessToken> - 토큰 만료 5분 전 자동 갱신:
POST /v1/hubs/refresh(body에refreshToken, 헤더에 현재accessToken)
이 토큰은 1개 hub 1개입니다. 같은 hub_uuid로 refresh 하면 이전 accessToken은 즉시 invalidate됩니다 (Pi와 다른 곳에서 동시에 들고 있으면 한 쪽은 401).
4. X-Tenant-UUID
/tenant/** 경로에서 어떤 tenant scope로 동작할지 결정합니다. JWT 사용자가 여러 tenant에 속할 수 있기 때문에 필요한 disambiguation 헤더입니다. X-API-Key 흐름에서도 동일하게 필요합니다.
헤더가 누락되거나 사용자가 그 tenant에 access 권한이 없으면 자격 박탈 → /tenant/** 요청은 403/401 응답.
우선순위 / 필터 순서
같은 요청에 여러 자격이 동시에 들어오면 다음 순서로 한 번만 활성화됩니다.
- X-API-Key 필터 —
/tenant/**에서만 동작 - JWT 필터 — sdx-oauth JWT,
/tenant·/app·/platform - Hub Token 필터 —
/v1/**에서만 동작
안전 가이드
- X-API-Key를 secret manager(1Password, AWS Secrets Manager 등)에 보관. Git에 절대 commit 금지.
- BFF 로그에 자격 헤더 redaction 처리.
- Hub token은
/var/lib/agent/state.json(Pi 측)에서 root 만 읽음. - 의심되는 키 유출 시 LinkOStar 운영팀에 즉시 알림 — 키 재발급.