msa-django-auth
MSA 아키텍처의 중앙 인증 및 자격증명 관리 서비스입니다.
기술 스택
| 분류 |
기술 |
| Framework |
Django 4.2.14 |
| API |
Django REST Framework 3.16.0 |
| Auth |
SimpleJWT 5.5.0 (RS256/HS256) |
| Database |
MySQL (mysqlclient 2.2.7) |
| Docs |
drf-yasg 1.21.10 (Swagger/ReDoc) |
| Tracing |
OpenTelemetry 1.34.0 |
| Server |
Gunicorn 20.1.0 |
주요 기능
- JWT 인증: RS256 비대칭 암호화, 토큰 발급/갱신/검증
- JWKS 엔드포인트: Istio 연동을 위한 공개키 제공
- 사용자 관리: 회원가입, 프로필 관리, 등급 관리
- SSH 키 관리: Fernet 암호화 저장, 복호화 조회
- NHN Cloud 자격증명: 멀티 프로젝트 지원, 암호화 저장
- KVM 서버 관리: 서버 등록, SSH 키 관리
API 엔드포인트
인증
| Method |
Endpoint |
설명 |
| POST |
/api/auth/register/ |
회원가입 |
| POST |
/api/auth/login/ |
로그인 (JWT 발급) |
| POST |
/api/auth/token/refresh/ |
토큰 갱신 |
| POST |
/api/auth/verify/ |
토큰 검증 |
| GET |
/.well-known/jwks.json |
JWKS 공개키 |
사용자
| Method |
Endpoint |
설명 |
| GET/PUT |
/api/auth/me/ |
내 정보 조회/수정 |
| GET |
/api/auth/users/ |
사용자 목록 (관리자) |
| GET/PUT/DELETE |
/api/auth/users/<id>/ |
사용자 관리 |
SSH 키
| Method |
Endpoint |
설명 |
| POST/DELETE |
/api/auth/ssh-key/ |
SSH 키 업로드/삭제 |
| GET |
/api/auth/ssh-key/info/ |
SSH 키 메타정보 |
| GET |
/api/auth/ssh-key/view/ |
SSH 키 조회 (복호화) |
NHN Cloud
| Method |
Endpoint |
설명 |
| GET/POST |
/api/auth/nhn-cloud/projects/ |
프로젝트 목록/생성 |
| GET/PUT |
/api/auth/nhn-cloud/projects/<id>/ |
프로젝트 조회/수정 |
| POST |
/api/auth/nhn-cloud/projects/<id>/activate/ |
프로젝트 활성화 |
KVM 서버
| Method |
Endpoint |
설명 |
| GET/POST |
/api/auth/kvm-servers/ |
서버 목록/등록 |
| GET/PUT |
/api/auth/kvm-servers/<id>/ |
서버 조회/수정 |
| POST |
/api/auth/kvm-servers/<id>/activate/ |
서버 활성화 |
| POST |
/api/auth/kvm-servers/<id>/ssh-key/upload/ |
SSH 키 업로드 |
API 문서
- Swagger UI:
/swagger/
- ReDoc:
/redoc/
환경 변수
실행 방법
개발 서버
운영 서버
Docker
데이터 모델
CustomUser
- email, name (고유)
- grade: admin, manager, user
- SSH 키 필드 (암호화)
- NHN Cloud 자격증명 (암호화)
NHNCloudProject
- 사용자별 멀티 프로젝트
- tenant_id, username, 암호화된 password
- dns_appkey
KVMServer
- 사용자별 서버 관리
- host, port, username
- SSH 키 (암호화), Libvirt URI