proxy-oidcv2/INDEX.md
2025-12-03 21:34:44 +01:00

315 lines
12 KiB
JavaScript

#!/usr/bin/env node
/**
* 🔐 Secure Proxy OIDC - Project Index
*
* Reverse proxy sécurisé avec authentification Keycloak
* et panel admin complet pour gérer les services internes.
*
* Created: December 3, 2025
*/
console.log(`
╔════════════════════════════════════════════════════════════════╗
║ ║
║ 🔐 SECURE PROXY - REVERSE PROXY WITH OIDC ║
║ ║
║ A complete solution to protect internal services behind ║
║ Keycloak authentication with a modern admin panel ║
║ ║
╚════════════════════════════════════════════════════════════════╝
📦 PROJECT FILES
================================================================================
📂 SOURCE CODE (src/)
─────────────────────
✓ server.js ........................... Main Express server (212 lines)
✓ config.js ........................... Configuration management
✓ db.js ............................... SQLite database initialization
📂 middleware/
✓ oidcMiddleware.js ............... OIDC & Keycloak authentication
✓ security.js ..................... Rate limiting, CSRF, headers
✓ proxyMiddleware.js .............. Reverse proxy logic
📂 routes/
✓ authRoutes.js ................... Auth endpoints (/auth/*)
✓ adminRoutes.js .................. Admin API endpoints (/api/*)
✓ dashboardRoutes.js .............. Dashboard routes
📂 controllers/
✓ authController.js ............... Authentication logic
✓ serviceController.js ............ Service CRUD operations
✓ adminController.js .............. Admin dashboard logic
📂 services/
✓ serviceManager.js ............... Database operations manager
📂 utils/
✓ logger.js ....................... Colored logging utility
📂 FRONTEND (public/)
─────────────────────
✓ admin.html ......................... Complete admin panel UI (HTML/CSS/JS)
• Dashboard with statistics
• Service management
• Audit logs viewer
• Responsive design
📂 SCRIPTS (scripts/)
──────────────────────
✓ initDb.js .......................... Initialize database
✓ seedDb.js .......................... Seed sample data
📂 DATABASE (db/)
──────────────────
✓ services.db ....................... SQLite database (auto-created)
📂 CONFIGURATION
─────────────────
✓ package.json ....................... Dependencies & scripts
✓ .env.example ....................... Configuration template
✓ .env ............................... Your configuration (create from .env.example)
✓ .gitignore ......................... Git exclusions
✓ Dockerfile ......................... Docker image definition
✓ docker-compose.yml ................ Complete dev stack
✓ nginx.example.conf ................ Nginx reverse proxy config
📂 DOCUMENTATION
──────────────────
✓ README.md .......................... Complete documentation
✓ INSTALLATION.md ................... Detailed setup guide
✓ QUICKSTART.md ..................... 5-minute quick start
✓ ARCHITECTURE.md ................... Technical architecture
✓ FEATURES.md ....................... Complete feature checklist
✓ PROJECT_SUMMARY.md ................ Quick reference guide
✓ INDEX.md ........................... This file
📂 TESTING
───────────
✓ test-api.sh ....................... API testing script
✓ project-structure.sh .............. Project structure viewer
📊 PROJECT STATISTICS
═════════════════════════════════════════════════════════════════
• Total Files Created: 28
• Lines of Code: ~1,500+ (src/)
• Documentation Files: 7
• Database Tables: 3
• API Endpoints: 14+
• Security Layers: 5
🚀 QUICK START
═════════════════════════════════════════════════════════════════
1. Install dependencies:
$ npm install
2. Initialize database:
$ npm run init-db
3. Start development server:
$ npm run dev
4. Open browser:
http://localhost:3000
5. Access admin panel:
http://localhost:3000/admin
📚 DOCUMENTATION QUICK LINKS
═════════════════════════════════════════════════════════════════
• New? → Read: QUICKSTART.md (5 min)
• Installation? → Read: INSTALLATION.md
• Architecture? → Read: ARCHITECTURE.md
• Full reference? → Read: README.md
• All features? → Read: FEATURES.md
🎯 KEY FEATURES
═════════════════════════════════════════════════════════════════
✅ OIDC Authentication (Keycloak)
✅ Reverse Proxy with Dynamic Routing
✅ Admin Panel for Service Management
✅ Complete CRUD Operations
✅ Audit & Access Logging
✅ Rate Limiting
✅ CSRF Protection
✅ Security Headers
✅ SQLite Database
✅ Docker Support
✅ Production Ready
✅ Fully Documented
🔒 SECURITY FEATURES
═════════════════════════════════════════════════════════════════
✅ HTTPS/SSL Support
✅ OIDC OAuth 2.0 Flow
✅ Secure Sessions (httpOnly, sameSite)
✅ CSRF Tokens
✅ Rate Limiting (15 req/min default)
✅ Helmet.js Security Headers
✅ Input Validation
✅ SQL Injection Prevention
✅ IP Logging & Tracing
✅ Complete Audit Trail
📖 ENDPOINTS OVERVIEW
═════════════════════════════════════════════════════════════════
Authentication:
GET /auth/login-page ........... Show login page
GET /auth/login ................ Initiate OAuth flow
POST /auth/callback ............ OAuth callback
GET /auth/logout ............... Logout
GET /auth/profile .............. User profile
Services Management (Admin only):
POST /api/services .............. Create service
GET /api/services .............. List all services
GET /api/services/:id .......... Get service details
PUT /api/services/:id .......... Update service
DELETE /api/services/:id ........ Delete service
PATCH /api/services/:id/toggle .. Enable/disable
GET /api/services/:id/logs .... Service access logs
Dashboard (Admin only):
GET /dashboard/stats ........... Statistics
GET /dashboard/logs ............ Audit logs
Proxy Routes:
ALL /proxy/* ................... Dynamic routing to services
🗂️ DATABASE SCHEMA
═════════════════════════════════════════════════════════════════
services:
- id (UUID)
- name (unique)
- path (unique, e.g. /myapp)
- target_url (e.g. http://localhost:8080)
- require_auth (boolean)
- description
- enabled (boolean)
- created_at, updated_at
audit_logs:
- id, action, user_id, service_id
- ip_address, details (JSON)
- timestamp
access_logs:
- id, service_id, user_id
- path, method, status_code
- response_time_ms, ip_address
- timestamp
⚙️ CONFIGURATION
═════════════════════════════════════════════════════════════════
Copy .env.example to .env and configure:
PORT=3000
NODE_ENV=development
PROXY_URL=https://secure.k2r.ovh
OIDC_ISSUER=https://keycloak.example.com/auth/realms/master
OIDC_CLIENT_ID=openidv2-client
OIDC_CLIENT_SECRET=your_secret
OIDC_CALLBACK_URL=https://secure.k2r.ovh/callback
ADMIN_USERNAME=admin@example.com
SESSION_SECRET=random_string_here
🐳 DOCKER
═════════════════════════════════════════════════════════════════
Build:
$ docker build -t openidv2 .
Run:
$ docker run -p 3000:3000 openidv2
Docker Compose (complete dev stack):
$ docker-compose up
📤 DEPLOYMENT
═════════════════════════════════════════════════════════════════
Development:
$ npm run dev
Production:
$ NODE_ENV=production npm start
Systemd:
See INSTALLATION.md for systemd setup
Docker:
$ docker build -t openidv2 .
$ docker run -p 3000:3000 openidv2
🛠️ USEFUL COMMANDS
═════════════════════════════════════════════════════════════════
npm install ............... Install dependencies
npm run dev ............... Start in dev mode (auto-reload)
npm start ................. Start in production
npm run init-db ........... Initialize database
npm run seed-db ........... Seed sample data
./test-api.sh ............. Test API endpoints
🎓 USAGE EXAMPLE
═════════════════════════════════════════════════════════════════
1. Create a service:
Name: Grafana
Path: /grafana
Target URL: http://localhost:3001
Require Auth: ✓
2. Access it:
http://localhost:3000/grafana
3. It proxies to:
http://localhost:3001
4. All accesses are:
- Logged for audit
- Protected by Keycloak auth
- Monitored for performance
💡 NEXT STEPS
═════════════════════════════════════════════════════════════════
1. Read QUICKSTART.md for 5-min setup ⏱️
2. Run: npm install && npm run init-db && npm run dev 🚀
3. Visit: http://localhost:3000 🌐
4. Create your first service via /admin 📝
5. Deploy to production when ready 🚢
📝 VERSION
═════════════════════════════════════════════════════════════════
Project: Secure Proxy OIDC v1.0.0
Created: December 3, 2025
Status: Production-Ready ✅
═════════════════════════════════════════════════════════════════
Questions? Check the documentation:
- README.md (general info)
- INSTALLATION.md (setup guide)
- QUICKSTART.md (quick reference)
- ARCHITECTURE.md (technical details)
Ready to build? 🎉
Let's go! 🚀
═════════════════════════════════════════════════════════════════
`);