/Token_Trade

OAuth 구현 실습 프로젝트

Primary LanguagePythonMIT LicenseMIT

Token Trade

** OAuth 구현 프로젝트 **

언어 및 프레임워크 : Python 3.10 & Django 5.0, DRF 3.15 RDBMS : Mariadb
ETC Tools : Git & Github, Notion, Discord

  • 기간: 24.09.04 ~ 24.09.11 (개선 작업 진행 중)

목차

  1. 프로젝트 소개
  2. 프로젝트 구조 및 설계
  3. 주요 기능
  4. API 명세서

프로젝트 소개

인증 서버와 자원 서버로 두 서버의 역할을 나눠서 구현했습니다. 각 서버는 RESTful API로 통신합니다 (gRPC로 변경 예정)

프로젝트 구조 및 설계

ERD

db_image

디렉토리 구조

Directory Structure
token_trade/
│  .env
│  LICENSE
│  Pipfile
│  Pipfile.lock
│  README.md
│
├─.github
│  └─ISSUE_TEMPLATE
│          issue--custom-issue-template.md
│          pull_request_template.md
│
├─auth_server
│  │  manage.py
│  │
│  ├─config
│  │      asgi.py
│  │      authentication.py
│  │      settings.py
│  │      urls.py
│  │      wsgi.py
│  │      __init__.py
│  │
│  └─user
│      │  apps.py
│      │  auth.py
│      │  urls.py
│      │  __init__.py
│      │
│      ├─admin
│      │      user_admin.py
│      │      __init__.py
│      │
│      ├─migrations
│      │      0001_initial.py
│      │      __init__.py
│      │
│      ├─models
│      │      user.py
│      │      __init__.py
│      │
│      ├─serializers
│      │      user_register_serializer.py
│      │      user_token_obtain_serializer.py
│      │      __init__.py
│      │
│      ├─tests
│      │      __init__.py
│      │
│      └─views
│              user_login_view.py
│              user_logout_view.py
│              user_refresh_token_view.py
│              user_register_view.py
│              user_verify_view.py
│              __init__.py
│
└─resource_server
    │  manage.py
    │  utils.py
    │
    ├─config
    │      asgi.py
    │      authentication.py
    │      models.py
    │      pagination.py
    │      settings.py
    │      urls.py
    │      wsgi.py
    │      __init__.py
    │
    ├─order
    │  │  apps.py
    │  │  permissions.py
    │  │  tests.py
    │  │  urls.py
    │  │  __init__.py
    │  │
    │  ├─admin
    │  │      order_admin.py
    │  │      __init__.py
    │  │
    │  ├─migrations
    │  │      0001_initial.py
    │  │      __init__.py
    │  │
    │  ├─models
    │  │      order.py
    │  │      __init__.py
    │  │
    │  ├─serializers
    │  │      order_detail_serializer.py
    │  │      order_list_serializer.py
    │  │      __init__.py
    │  │
    │  ├─tests
    │  │      __init__.py
    │  │
    │  └─views
    │          order_detail_view.py
    │          order_list_view.py
    │          __init__.py
    │
    └─product
        │  apps.py
        │  permissions.py
        │  urls.py
        │  __init__.py
        │
        ├─admin
        │      product_admin.py
        │      __init__.py
        │
        ├─migrations
        │      0001_initial.py
        │      __init__.py
        │
        ├─models
        │      product.py
        │      __init__.py
        │
        ├─serializers
        │      product_serializer.py
        │      __init__.py
        │
        ├─tests
        │      __init__.py
        │
        └─views
                product_detail_view.py
                product_list_view.py
                __init__.py


Setting Guide

  • 루트 디렉토리에 .env 밑처럼 세팅
AUTH_SERVER_SECRET_KEY=auth_key
RESOURCE_SERVER_SECRET_KEY=resource_key

DB_NAME=your_database_name
DB_USER=your_database_user
DB_PASSWORD=your_database_password
DB_HOST=localhost
DB_PORT=3306
-- 명령 프롬프트 두 개 세팅

-- 프로젝트 경로로 이동
cd [프로젝트 경로]

-- pipenv 설치
pipenv install
pipenv install --dev

-- 가상 환경 on
pipenv shell

-- 인증 서버로 이동 및 실행
cd auth_server
python manage.py runserver

-- 자원 서버로 이동 및 실행
cd resource_server
python manage.py runserver 5000

-- 가상환경 중지
exit

주요 기능

  • 회원가입 및 인증: 계정 생성, JWT를 통한 인증 및 보안 유지.
  • 쇼핑몰: 자원 서버에서 쇼핑몰 관련 기능 사용 가능 (상품 구매 등)

API 명세서

swagger 참조