icurfer 1a0996c146
All checks were successful
Build And Test / build-and-push (push) Successful in 2m20s
v0.0.34
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-24 02:08:03 +09:00
2026-01-23 02:51:21 +09:00
2026-01-23 02:51:21 +09:00
2025-12-08 13:52:54 +09:00
2026-01-24 02:08:03 +09:00
2026-01-23 02:51:21 +09:00
2026-01-13 22:58:36 +09:00
2025-04-22 21:08:08 +09:00
2025-04-22 17:01:27 +09:00
2026-01-17 00:04:15 +09:00
2026-01-24 02:08:03 +09:00

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/

환경 변수

# Django
DEBUG=1
SECRET_KEY=your-secret-key

# Database
SQL_ENGINE=django.db.backends.mysql
SQL_HOST=localhost
SQL_USER=user
SQL_PASSWORD=password
SQL_DATABASE=msa-auth
SQL_PORT=3306

# JWT (RS256 모드)
ISTIO_JWT=1

# Tracing
TRACE_ENDPOINT=jaeger-collector:4317
TRACE_SERVICE_NAME=msa-django-auth

실행 방법

개발 서버

python3 -m venv venv
source venv/bin/activate
pip install -r requirements.txt
python3 manage.py migrate
python3 manage.py runserver 0.0.0.0:8000

운영 서버

gunicorn auth_prj.wsgi:application --bind 0.0.0.0:8000 --workers 3

Docker

docker build -t msa-django-auth .
docker run -p 8000:8000 --env-file .env.prd msa-django-auth

데이터 모델

CustomUser

  • email, name (고유)
  • grade: admin, manager, user
  • SSH 키 필드 (암호화)
  • NHN Cloud 자격증명 (암호화)

NHNCloudProject

  • 사용자별 멀티 프로젝트
  • tenant_id, username, 암호화된 password
  • dns_appkey

KVMServer

  • 사용자별 서버 관리
  • host, port, username
  • SSH 키 (암호화), Libvirt URI
Description
No description provided
Readme 379 KiB
Languages
Python 99.5%
Dockerfile 0.5%