{"id":48540504,"url":"https://github.com/ndxdeveloper/banking-session-api","last_synced_at":"2026-04-08T04:02:45.511Z","repository":{"id":308984092,"uuid":"1034793614","full_name":"NDXDeveloper/banking-session-api","owner":"NDXDeveloper","description":"API Banking Sessions avec authentification 2FA, monitoring et audit - Production ready","archived":false,"fork":false,"pushed_at":"2025-08-09T02:41:23.000Z","size":92,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-08-09T04:14:19.129Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"C#","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/NDXDeveloper.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2025-08-09T02:11:24.000Z","updated_at":"2025-08-09T02:41:24.000Z","dependencies_parsed_at":"2025-08-09T04:15:59.819Z","dependency_job_id":"1b2836ab-7942-436e-aea2-0ce40fb31986","html_url":"https://github.com/NDXDeveloper/banking-session-api","commit_stats":null,"previous_names":["ndxdeveloper/banking-session-api"],"tags_count":4,"template":false,"template_full_name":null,"purl":"pkg:github/NDXDeveloper/banking-session-api","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/NDXDeveloper%2Fbanking-session-api","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/NDXDeveloper%2Fbanking-session-api/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/NDXDeveloper%2Fbanking-session-api/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/NDXDeveloper%2Fbanking-session-api/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/NDXDeveloper","download_url":"https://codeload.github.com/NDXDeveloper/banking-session-api/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/NDXDeveloper%2Fbanking-session-api/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31539230,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-07T16:28:08.000Z","status":"online","status_checked_at":"2026-04-08T02:00:06.127Z","response_time":54,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2026-04-08T04:02:34.508Z","updated_at":"2026-04-08T04:02:45.500Z","avatar_url":"https://github.com/NDXDeveloper.png","language":"C#","readme":"# 🏦 API Sessions Bancaires .NET 8\n\nUne API REST .NET 8 robuste et sécurisée pour la gestion des sessions utilisateur dans les applications bancaires et d'assurance.\n\n## ✨ Fonctionnalités\n\n- 🔐 **Authentification flexible** : Token, Cookie ou Both (configurable)\n- 🔒 **Authentification 2FA** : Codes à 6 chiffres par email avec resend\n- 📊 **Audit complet** de toutes les actions\n- 🛡️ **Sécurité renforcée** : HTTPS, cookies HttpOnly/Secure, headers de sécurité\n- ⚡ **Performances optimisées** avec mise en cache Redis\n- 🔄 **Révocation instantanée** des sessions\n- 📱 **Gestion multi-devices**\n- 👨‍💼 **Administration** : Création d'utilisateurs par les admins\n- 🔒 **Réponses sécurisées** : Configuration des données exposées\n- 🏥 **Health checks** intégrés\n- 📈 **Monitoring** complet (Prometheus + Grafana + dashboards SQL)\n- 🔍 **Audit \u0026 Traçabilité** (AuditLog + Seq + conformité GDPR/PCI DSS)\n- 🔄 **Extension de session** avec limites de sécurité\n- 🚀 **Auto-initialisation** pour déploiement \"plug \u0026 play\"\n- 🚨 **Alertes proactives** sur anomalies et incidents de sécurité\n\n## 🚀 Technologies utilisées\n\n- **.NET 8** - Framework principal\n- **ASP.NET Core Identity** - Gestion des utilisateurs\n- **Redis** - Stockage des sessions\n- **Entity Framework Core** - ORM\n- **SQL Server** - Base de données\n- **Serilog** - Logging structuré\n- **FluentValidation** - Validation des modèles\n- **AutoMapper** - Mapping des objets\n- **MailKit** - Envoi d'emails SMTP pour 2FA\n\n## 🏗️ Architecture\n\nCette API suit les principes de l'architecture Clean Architecture :\n\n- **Controllers** : Points d'entrée de l'API\n- **Services** : Logique métier\n- **Data** : Accès aux données\n- **Models** : Entités et DTOs\n\n## 🔧 Installation\n\n### Prérequis\n\n- .NET 8 SDK\n- SQL Server ou SQL Server Express\n- Redis Server\n- Visual Studio 2022 ou VS Code\n\n### Configuration\n\n1. **Cloner le repository**\n```bash\ngit clone https://github.com/username/API-Sessions-Bancaires-NET8.git\ncd API-Sessions-Bancaires-NET8\n```\n\n2. **Configurer appsettings.json**\n```json\n{\n  \"ConnectionStrings\": {\n    \"DefaultConnection\": \"Server=localhost;Database=BankingSessionDB;Trusted_Connection=true;\",\n    \"Redis\": \"localhost:6379\"\n  },\n  \"SecuritySettings\": {\n    \"AuthenticationMethod\": \"cookie\", // \"token\", \"cookie\", \"both\"\n    \"UseSecureResponses\": true,\n    \"ExposeDetailedUserInfo\": false,\n    \"EnableTwoFactorAuthentication\": true\n  },\n  \"EmailSettings\": {\n    \"SmtpHost\": \"smtp.gmail.com\",\n    \"SmtpPort\": 587,\n    \"SmtpUsername\": \"votre-email@gmail.com\",\n    \"SmtpPassword\": \"votre-mot-de-passe-app\",\n    \"FromEmail\": \"votre-email@gmail.com\",\n    \"IsEnabled\": true\n  }\n}\n```\n\n3. **Lancer l'application (avec auto-initialisation)**\n```bash\n# Mode développement (auto-initialise la base de données)\ndotnet run --project src/BankingSessionAPI\n\n# Mode production explicite\nASPNETCORE_ENVIRONMENT=Production dotnet run --project src/BankingSessionAPI --urls \"https://localhost:5001;http://localhost:5000\"\n```\n\n**Note:** L'API inclut désormais l'auto-initialisation de la base de données. Plus besoin de lancer manuellement `dotnet ef database update`. La base de données et les données de test sont créées automatiquement au premier démarrage.\n\n## 📚 Documentation\n\nL'API est documentée avec Swagger/OpenAPI. Accédez à `/swagger` une fois l'application lancée.\n\n### Guides Disponibles\n\n📖 **[API_DOCUMENTATION.md](docs/API_DOCUMENTATION.md)** - Documentation complète de l'API  \n📊 **[MONITORING.md](docs/MONITORING.md)** - Guide du monitoring (Prometheus, Grafana, dashboards)  \n🔍 **[AUDIT.md](docs/AUDIT.md)** - Système d'audit et conformité (AuditLog, Seq, investigations)  \n\n### Documentation Spécialisée\n- **API REST** : Endpoints, authentification, exemples curl\n- **Monitoring** : Métriques temps réel, alertes, dashboards\n- **Audit \u0026 Sécurité** : Traçabilité, conformité GDPR/PCI DSS\n\n### 🧪 Comptes de test disponibles\n\n| Rôle | Email | Password | 2FA |\n|------|-------|----------|-----|\n| Test 2FA | ndxdev@gmail.com | TestUser123! | ✅ |\n| Super Admin | superadmin@banking-api.com | SuperAdmin123! | ❌ |\n| Admin | admin@banking-api.com | Admin123! | ❌ |\n| User | testuser@banking-api.com | TestUser123! | ❌ |\n\n### Endpoints principaux\n\n**Authentification :**\n- `POST /api/SessionAuth/login` - Connexion utilisateur (avec/sans 2FA)\n- `POST /api/SessionAuth/verify-2fa` - Vérification du code 2FA\n- `POST /api/SessionAuth/resend-2fa` - Renvoyer le code 2FA\n- `POST /api/SessionAuth/logout` - Déconnexion\n- `GET /api/SessionAuth/session-info` - Informations de session\n- `POST /api/SessionAuth/extend-session` - Extension de session (limites de sécurité)\n\n**Administration :**\n- `POST /api/Admin/create-user` - Création d'utilisateur (Admin/SuperAdmin)\n- `POST /api/SessionAuth/revoke-session/{sessionId}` - Révocation de session (Admin)\n- `POST /api/SessionAuth/revoke-user-sessions/{userId}` - Révocation toutes sessions (Admin)\n\n**Health Checks :**\n- `GET /health` - État de santé global\n- `GET /health/detailed` - État détaillé avec métriques\n- `GET /health/ping` - Test simple de connectivité\n\n## 🛡️ Sécurité\n\n- **HTTPS obligatoire** en production\n- **Authentification 2FA** par email avec codes temporaires\n- **Multi-authentification** : Token/Cookie/Both selon configuration\n- **Cookies sécurisés** : HttpOnly, Secure, SameSite=Strict\n- **Headers de sécurité** : HSTS, CSP, X-Frame-Options, etc.\n- **Rate limiting** pour prévenir les attaques (brute force, 2FA)\n- **Réponses configurables** : Limitation des données exposées\n- **Audit complet** de toutes les actions sensibles\n- **Chiffrement** des données sensibles en base\n\n## 🧪 Tests\n\n```bash\n# Tests unitaires\ndotnet test tests/BankingSessionAPI.Tests\n\n# Tests de charge\ndotnet test tests/BankingSessionAPI.LoadTests\n```\n\n## 📊 Monitoring \u0026 Observabilité\n\n### Stack de Monitoring Complet\n- **Prometheus** (port 9090) : Collecte des métriques temps réel\n- **Grafana** (port 3000) : Dashboards visuels et alertes\n- **SQL Dashboards** : Analyse des données d'audit historiques  \n- **Seq** (port 5341) : Logs structurés centralisés\n\n### Activation du Monitoring\n```bash\n# Activer le stack complet\n./scripts/deployment/monitoring.sh start\n\n# Configuration dans appsettings.json\n{\n  \"MonitoringSettings\": {\n    \"EnablePrometheusMetrics\": true,\n    \"EnableGrafanaDashboards\": true,\n    \"EnableAlerting\": true\n  }\n}\n```\n\n### Accès aux Services\n- **Grafana** : http://localhost:3000 (admin/BankingDashboard123!)\n- **Prometheus** : http://localhost:9090\n- **Seq** : http://localhost:5341\n- **Métriques API** : http://localhost:5000/metrics\n\n## 🐳 Docker\n\n```bash\n# Construire et lancer avec Docker Compose (avec auto-initialisation)\ndocker-compose up -d\n\n# Lancer avec monitoring (optionnel)\ndocker-compose --profile monitoring up -d\n\n# Nettoyer et relancer (script utilitaire inclus)\n./deploy.sh clean  # Détruit tout et nettoie\n./deploy.sh up     # Reconstruit et démarre\n\n# Gestion du monitoring\n./scripts/deployment/monitoring.sh start   # Démarrer monitoring\n./scripts/deployment/monitoring.sh stop    # Arrêter monitoring\n./scripts/deployment/monitoring.sh status  # État des services\n```\n\n**Note:** Les conteneurs sont configurés en UTC pour éviter les problèmes de timezone. L'auto-initialisation fonctionne également en mode conteneur.\n\n### Ports Exposés\n| Service | Port | Description |\n|---------|------|-------------|\n| **API Banking** | 5000/5001 | API principale (HTTP/HTTPS) |\n| **Grafana** | 3000 | Dashboards de monitoring |\n| **Prometheus** | 9090 | Métriques et targets |\n| **Seq** | 5341 | Logs centralisés |\n| **SQL Server** | 1433 | Base de données |\n| **Redis** | 6379 | Cache des sessions |\n\n## 🛠️ Développement\n\n### Scripts de Debug\n\nPour un développement rapide avec rechargement automatique :\n\n```bash\n# Démarrage environnement de debug (services essentiels)\n./start-debug.sh\n\n# Démarrage avec monitoring (développement avancé)\n./start-debug.sh --with-monitoring\n\n# Arrêt de l'environnement\n./stop-debug.sh\n./stop-debug.sh --with-monitoring  # Si démarré avec monitoring\n```\n\n### Workflow de Développement\n\n1. **Démarrer les services** : `./start-debug.sh`\n2. **Ouvrir VS Code** : `code .`\n3. **Lancer le debug** : `F5` ou `Ctrl+F5`\n4. **Accéder à l'API** : http://localhost:5000/swagger\n\n### Services Disponibles en Debug\n\n| Service | URL | Description |\n|---------|-----|-------------|\n| **API Debug** | http://localhost:5000 | API en mode debug |\n| **Swagger** | http://localhost:5000/swagger | Documentation interactive |\n| **Seq** | http://localhost:5341 | Logs centralisés |\n\n**Avec monitoring (`--with-monitoring`) :**\n- **Grafana** : http://localhost:3000 (admin/BankingDashboard123!)\n- **Prometheus** : http://localhost:9090\n- **Métriques** : http://localhost:5000/metrics\n\n## 📈 Performance\n\n- **Sessions en mémoire** avec Redis pour une latence minimale\n- **Mise en cache** des données fréquemment accédées\n- **Cleanup automatique** des sessions expirées\n\n## 📞 Support\n\nPour toute question technique, consultez la documentation dans le dossier `/docs`.\n\n## 👨‍💻 Auteur\n\n**Nicolas DEOUX**\n📧 NDXdev@gmail.com\n\n## 📄 Licence\n\nCe projet est sous licence MIT. Voir le fichier [LICENSE](LICENSE) pour plus de détails.\n\n## 🔐 Méthodes d'Authentification\n\nL'API supporte 3 modes d'authentification configurables dans `appsettings.json` :\n\n### 🎯 Mode Token\n```bash\n# Connexion\ncurl -X POST http://localhost:5000/api/SessionAuth/login \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\"email\": \"test@example.com\", \"password\": \"Test123!\"}'\n\n# Utilisation\ncurl -H \"X-Session-Token: YOUR_TOKEN\" http://localhost:5000/api/SessionAuth/session-info\n```\n\n### 🍪 Mode Cookie (Recommandé pour Web)\n```bash\n# Connexion (retourne cookie HttpOnly)\ncurl -X POST http://localhost:5000/api/SessionAuth/login \\\n  -c cookies.txt \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\"email\": \"test@example.com\", \"password\": \"Test123!\"}'\n\n# Utilisation automatique\ncurl -b cookies.txt http://localhost:5000/api/SessionAuth/session-info\n```\n\n### 🔄 Mode Both\nSupporte les deux méthodes simultanément pour une flexibilité maximale.\n\n## 🆕 Nouveautés v1.2.0\n\n- ✅ **Stack Monitoring Complet** : Prometheus + Grafana + dashboards SQL + alertes proactives\n- ✅ **Extension de Session** : Prolongation sécurisée (max 8h par extension, 24h total)\n- ✅ **Documentation Spécialisée** : Guides MONITORING.md et AUDIT.md pour experts\n- ✅ **Scripts de Développement** : `start-debug.sh --with-monitoring` pour développement avancé\n- ✅ **Auto-initialisation** : Plus besoin de migrations manuelles, \"plug \u0026 play\"\n- ✅ **Audit \u0026 Conformité** : Traçabilité GDPR/PCI DSS avec investigations forensiques\n- ✅ **Timezone UTC** : Synchronisation complète pour éviter les problèmes\n- ✅ **Métriques Prometheus** : Endpoint /metrics optionnel pour collecte\n- ✅ **Calculs Précis** : Correction des minutes restantes et expiration\n- ✅ **Dashboards Grafana** : 3 dashboards préconfigurés (API, Audit, Alertes)\n\n## 🆕 Nouveautés v1.1.0\n\n- ✅ **2FA par Email** : Codes à 6 chiffres avec fonction resend\n- ✅ **Multi-Auth** : Token/Cookie/Both selon vos besoins\n- ✅ **Sécurité Configurable** : Contrôle fin des données exposées\n- ✅ **Administration** : Création d'utilisateurs par interface Admin\n- ✅ **Cookies Sécurisés** : HttpOnly, Secure, SameSite=Strict\n- ✅ **Profils Étendus** : Champ Address et informations complètes\n\n---\n\n⚠️ **Important** : Cette API est conçue pour des environnements de production bancaires/assurance avec des exigences de sécurité élevées. Assurez-vous de suivre toutes les bonnes pratiques de sécurité avant le déploiement.","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fndxdeveloper%2Fbanking-session-api","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fndxdeveloper%2Fbanking-session-api","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fndxdeveloper%2Fbanking-session-api/lists"}