Переиспользуемый микросервис для аутентификации через GitHub OAuth 2.0 на NestJS + TypeScript.
┌─────────────┐ ┌──────────────────┐ ┌─────────┐
│ Frontend │────▶│ Auth Service │────▶│ GitHub │
│ (React) │◀────│ (NestJS) │◀────│ OAuth │
└─────────────┘ └──────────────────┘ └─────────┘
│ │
│ JWT Token │
└───────────────────────┘
git clone https://github.com/fxhxyz4/github-auth-service
cd github-auth-service
npm install -g yarn
yarn- Перейди на https://github.com/settings/developers
- Создай новый OAuth App
- Заполни:
- Application name: Твоё название
- Homepage URL:
http://localhost:3000 - Authorization callback URL:
http://localhost:3000/api/auth/github/callback
- Получи Client ID и Client Secret
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# Install yarn
npm i -g yarn@latest
# Development mode
yarn start:dev
# Production build
yarn build
yarn production
# Docker
docker-compose up -dGET /api/auth/github?client_id=YOUR_CLIENT_IDПеренаправляет пользователя на GitHub для авторизации.
GET /api/auth/github/callbackGitHub перенаправляет сюда после авторизации. Возвращает JWT токен.
GET /api/auth/validate?token=YOUR_JWT_TOKENОтвет:
{
"valid": true,
"user": {
"userId": "12345",
"username": "octocat",
"email": "octocat@github.com"
}
}GET /api/auth/me
Authorization: Bearer YOUR_JWT_TOKENОтвет:
{
"userId": "12345",
"username": "octocat",
"email": "octocat@github.com"
}GET /api/auth/healthdocker build -t github-auth-service .
docker run -p 3000:3000 --env-file .env github-auth-servicedocker-compose up -dMIT