Skip to content

NotNexx/Auth-API

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

9 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Auth-API (Secure JWT Authentication)

Produktionsnahe Auth-API mit Node.js, Express und PostgreSQL.

Features

  • Registrierung mit Argon2 Password Hashing
  • Login via Username oder E-Mail
  • JWT Access + Refresh Token Flow (inkl. Rotation)
  • Logout (Revocation des Refresh Tokens)
  • Authenticated me Endpoint
  • Passwortwechsel mit Session-Invalidierung
  • API-Key Schutz für alle Auth/Admin Endpoints
  • Parameterisierte SQL Queries (SQL-Injection Schutz)
  • Auto-Setup der benötigten Tabellen beim Start

Setup

  1. Abhängigkeiten installieren:
npm install
  1. Konfiguration erstellen:
cp .env.example .env
  1. .env Werte setzen (insb. DB + JWT Secrets + API_KEY).

  2. Server starten:

npm run dev

Endpoints

Public

GET /

  • API Basisstatus

GET /health

  • Healthcheck

Auth (alle benötigen x-api-key Header)

POST /auth/register

{
  "username": "demo_user",
  "email": "demo@example.com",
  "password": "VeryStrongPassword123!"
}

POST /auth/login

{
  "identifier": "demo_user",
  "password": "VeryStrongPassword123!"
}

Response enthält:

  • accessToken
  • refreshToken
  • user

POST /auth/refresh

{
  "refreshToken": "<refresh-token>"
}

Gibt neues accessToken + rotiertes refreshToken zurück.

POST /auth/logout

{
  "refreshToken": "<refresh-token>"
}

GET /auth/me

Benötigt:

  • x-api-key: <API_KEY>
  • Authorization: Bearer <access-token>

POST /auth/change-password

Benötigt:

  • x-api-key: <API_KEY>
  • Authorization: Bearer <access-token>
{
  "currentPassword": "VeryStrongPassword123!",
  "newPassword": "AnotherStrongPassword456!"
}

Admin (zusätzlich Bearer Token)

Alle /admin/* Endpoints benötigen:

  • x-api-key
  • Authorization: Bearer <access-token>

GET /admin/users

Liste aller Benutzer.

GET /admin/users/:id

Einzelnen Benutzer abrufen.

PATCH /admin/users/:id

{
  "username": "new_username",
  "email": "new@example.com",
  "isActive": true
}

DELETE /admin/users/:id

Benutzer löschen.

Security Hinweise

  • Nutze lange, zufällige Secrets (JWT_*_SECRET, API_KEY)
  • Nutze HTTPS in Produktion
  • Begrenze Token-Laufzeiten in sicherheitskritischen Umgebungen
  • Ergänze optional Rate Limiting und Audit Logging

About

Simple authentication api written in node.js. Perfect to sell software

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors