Skip to content
This repository was archived by the owner on Mar 20, 2026. It is now read-only.

fxhxyz4/gh-auth-service

Repository files navigation

GitHub Auth Service 🔐

Переиспользуемый микросервис для аутентификации через GitHub OAuth 2.0 на NestJS + TypeScript.

🏗️ Архитектура

┌─────────────┐      ┌──────────────────┐      ┌─────────┐
│  Frontend   │────▶│  Auth Service    │────▶│ GitHub  │
│  (React)    │◀────│  (NestJS)        │◀────│  OAuth  │
└─────────────┘      └──────────────────┘      └─────────┘
      │                       │
      │      JWT Token        │
      └───────────────────────┘

🚀 Быстрый старт

1. Клонировать и установить

git clone https://github.com/fxhxyz4/github-auth-service
cd github-auth-service

npm install -g yarn
yarn

2. Настроить GitHub OAuth App

  1. Перейди на https://github.com/settings/developers
  2. Создай новый OAuth App
  3. Заполни:
    • Application name: Твоё название
    • Homepage URL: http://localhost:3000
    • Authorization callback URL: http://localhost:3000/api/auth/github/callback
  4. Получи Client ID и Client Secret

3. Настроить окружение

cp .env.example .env

Отредактируй .env:

PORT=3000
NODE_ENV=development

JWT_SECRET=
JWT_EXPIRES_IN=7d

ALLOWED_ORIGINS=http://localhost:3000,http://localhost:5173,http://localhost:4200

GITHUB_CLIENT_ID=
GITHUB_CLIENT_SECRET=
GITHUB_CALLBACK_URL=http://localhost:3000/api/auth/github/callback

GITHUB_SCOPES=user:email,read:user

4. Запустить

# Install yarn
npm i -g yarn@latest

# Development mode
yarn start:dev

# Production build
yarn build
yarn production

# Docker
docker-compose up -d

📡 API Endpoints

1. Начать OAuth flow

GET /api/auth/github?client_id=YOUR_CLIENT_ID

Перенаправляет пользователя на GitHub для авторизации.

2. Callback (автоматический)

GET /api/auth/github/callback

GitHub перенаправляет сюда после авторизации. Возвращает JWT токен.

3. Проверить токен

GET /api/auth/validate?token=YOUR_JWT_TOKEN

Ответ:

{
  "valid": true,
  "user": {
    "userId": "12345",
    "username": "octocat",
    "email": "octocat@github.com"
  }
}

4. Получить текущего пользователя

GET /api/auth/me
Authorization: Bearer YOUR_JWT_TOKEN

Ответ:

{
  "userId": "12345",
  "username": "octocat",
  "email": "octocat@github.com"
}

5. Health check

GET /api/auth/health

🚢 Деплой

Docker

docker build -t github-auth-service .
docker run -p 3000:3000 --env-file .env github-auth-service

Docker Compose

docker-compose up -d

📝 Лицензия

MIT

About

Reusable GitHub OAuth authentication service (NestJS)

Topics

Resources

License

Stars

Watchers

Forks