0bin-label-app 프로젝트의 auth 폴더에서 별도 리포지토리로 분리. Flask 기반 로그인 인증 서버: - POST /api/login: 클라이언트 로그인 API - GET /api/health: 서버 상태 확인 - /admin: 관리자 웹 페이지 - SQLite 기반 사용자 및 로그인 기록 저장 Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
100 lines
1.8 KiB
Markdown
100 lines
1.8 KiB
Markdown
# 0bin Label App - 인증 서버
|
|
|
|
Flask 기반 인증 서버 (포트: 8898)
|
|
|
|
## 설치
|
|
|
|
```bash
|
|
cd auth
|
|
pip install -r requirements.txt
|
|
```
|
|
|
|
## 실행
|
|
|
|
```bash
|
|
python app.py
|
|
```
|
|
|
|
서버가 `http://0.0.0.0:8898`에서 시작됩니다.
|
|
|
|
## 기능
|
|
|
|
### 1. 클라이언트 인증 API
|
|
|
|
- **엔드포인트**: `POST /api/login`
|
|
- **요청**:
|
|
```json
|
|
{
|
|
"username": "test",
|
|
"password": "test"
|
|
}
|
|
```
|
|
- **응답 (성공)**:
|
|
```json
|
|
{
|
|
"success": true,
|
|
"message": "로그인 성공",
|
|
"username": "test"
|
|
}
|
|
```
|
|
- **응답 (실패)**:
|
|
```json
|
|
{
|
|
"success": false,
|
|
"message": "아이디 또는 비밀번호가 올바르지 않습니다"
|
|
}
|
|
```
|
|
|
|
### 2. Admin 웹 페이지
|
|
|
|
- **URL**: `http://localhost:8898/admin`
|
|
- **계정**: `admin` / `admin1234`
|
|
- **기능**:
|
|
- 사용자 목록 조회
|
|
- 로그인 기록 조회 (최근 50개)
|
|
- 통계 확인
|
|
|
|
## 기본 계정
|
|
|
|
### 클라이언트 계정
|
|
- 아이디: `test`
|
|
- 비밀번호: `test`
|
|
|
|
### Admin 계정
|
|
- 아이디: `admin`
|
|
- 비밀번호: `admin1234`
|
|
|
|
## 리버스 프록시 설정
|
|
|
|
외부에서 `login.0bin.in`으로 접근하려면 Nginx 등을 사용하여 리버스 프록시를 설정하세요.
|
|
|
|
```nginx
|
|
server {
|
|
listen 80;
|
|
server_name login.0bin.in;
|
|
|
|
location / {
|
|
proxy_pass http://localhost:8898;
|
|
proxy_set_header Host $host;
|
|
proxy_set_header X-Real-IP $remote_addr;
|
|
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
|
}
|
|
}
|
|
```
|
|
|
|
## 데이터베이스
|
|
|
|
- SQLite (`auth_db.sqlite`)
|
|
- 자동으로 생성됨
|
|
- 테이블:
|
|
- `users`: 사용자 정보
|
|
- `login_logs`: 로그인 기록
|
|
|
|
## 보안
|
|
|
|
**주의**: 프로덕션 환경에서는 다음을 변경하세요:
|
|
1. `app.config['SECRET_KEY']` 변경
|
|
2. Admin 계정 비밀번호 변경
|
|
3. HTTPS 사용
|
|
4. 환경 변수로 민감 정보 관리
|