인증¶
Authentik SSO¶
https://auth.sjanglab.org — 중앙 OIDC/OAuth2 인증 제공자입니다.
통합 서비스¶
| 서비스 | 인증 방식 | 설명 |
|---|---|---|
| Headscale | OIDC | VPN 로그인 시 그룹 기반 접근 제어 |
| Nextcloud | OIDC (user_oidc) |
SSO 로그인 |
| Vaultwarden | OIDC (PKCE) | SSO 로그인 |
| n8n | Forward Auth | 관리자/연구원용 워크플로우 UI (Headscale ACL + Forward Auth 이중 보호) |
| Grafana | Forward Auth | Tailnet에서만 접근 가능한 관리자 대시보드 |
| Gatus | 없음 | Tailnet에서만 접근 가능한 공개 상태 페이지 (Authentik dashboard tile만 표시) |
| Docling/TEI | Headscale ACL | 연구자/관리자용 AI API |
| MULTI-evolve | Headscale ACL + Forward Auth | 연구자/관리자용 Streamlit UI |
| Nixbot | GitHub OAuth | CI/CD 대시보드 접근 |
RAGFlow UI-only residue cleanup¶
ragflow, rag-flow, rag, ragflow.sjanglab.org, rag.sjanglab.org 검색 결과 repo-managed RAGFlow/Authentik 설정은 없습니다. Authentik 런타임 UI에만 남아 있으면 다음 항목만 삭제합니다:
- Applications → Applications:
RAGFlowapplication 삭제 - Applications → Providers:
RAGFlowprovider 삭제 - Applications → Outposts: RAGFlow가 할당된 outpost 편집 후 application 목록에서 제거; RAGFlow 전용 outpost면 outpost 삭제
- RAGFlow 전용 policy, property mapping, group binding이 있으면 해당 RAGFlow 전용 항목만 삭제
Forward Auth 흐름¶
n8n 등 Forward Auth를 사용하는 서비스의 인증 흐름:
sequenceDiagram
participant U as 사용자
participant N as nginx
participant A as Authentik outpost<br/>(10.100.0.1:9000)
participant S as 서비스 (n8n 등)
U->>N: 요청
N->>A: 인증 확인 (/outpost.goauthentik.io/auth)
alt 미인증
A-->>N: 401
N-->>U: 로그인 페이지로 리다이렉트
U->>A: 로그인
A-->>U: 인증 완료, 원래 URL로 리다이렉트
else 인증됨
A-->>N: 200 + 사용자 정보 헤더
N->>S: X-authentik-email 헤더와 함께 전달
S-->>U: 응답
end
Authentik outpost는 wg-admin 인터페이스(포트 9000)에서만 접근 가능합니다.
그룹¶
| 그룹 | 용도 | Headscale ACL 태그 |
|---|---|---|
sjanglab-admins |
전체 접근 권한 | tag:ai, tag:apps, tag:monitoring |
sjanglab-researchers |
AI + 앱 접근 | tag:ai, tag:apps |
sjanglab-students |
앱만 접근 | tag:apps |
Authentik 사용자와 그룹 선언은 terraform/authentik에서 관리합니다. 사람 계정 목록은 개인정보 보호를 위해 SOPS로 암호화한 terraform/authentik/users.yaml에 둡니다. 학생 계정은 expires_on을 반드시 지정하고, 만료 후에는 active: false로 변경합니다.
Headscale ACL policy는 terraform/headscale이 같은 users.yaml에서 생성합니다. 비활성 사용자는 Authentik group membership과 Headscale ACL group에서 함께 빠집니다. 상세 매커니즘은 네트워크 — ACL 정책 관리를 참조하세요.