feat: Implémentation authentification NIST SP 800-63B v3.0.8
- Ajout du service PasswordSecurityService conforme NIST SP 800-63B - Vérification des mots de passe contre la base Have I Been Pwned - Validation : minimum 8 caractères, maximum 64 caractères - Pas d'exigences de composition obligatoires (conforme NIST) - Intégration dans LoginController et UserController - Génération de mots de passe sécurisés non compromis 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
@@ -773,6 +773,83 @@ LoggerService.info('Application démarrée');
|
||||
|
||||
Cette architecture garantit un système de logging professionnel, sécurisé et performant, adapté aux besoins de développement tout en protégeant la production. 📝✨
|
||||
|
||||
## 🔐 Gestion des identifiants - Normes NIST SP 800-63B
|
||||
|
||||
### 🎯 Vue d'ensemble
|
||||
|
||||
GEOSECTOR v2.0 implémente les **normes NIST SP 800-63B** pour la gestion des identifiants (usernames et passwords), offrant une sécurité renforcée tout en améliorant l'expérience utilisateur avec des règles plus flexibles et modernes.
|
||||
|
||||
### 📋 Conformité NIST SP 800-63B
|
||||
|
||||
| Exigence NIST | Implémentation | Statut |
|
||||
|---------------|----------------|--------|
|
||||
| **Longueur minimale : 8 caractères** | ✅ MIN = 8 caractères | ✅ CONFORME |
|
||||
| **Longueur maximale : 64 caractères minimum** | ✅ MAX = 64 caractères | ✅ CONFORME |
|
||||
| **Accepter TOUS les caractères ASCII imprimables** | ✅ Aucune restriction sur les caractères | ✅ CONFORME |
|
||||
| **Accepter les espaces** | ✅ Espaces acceptés (début, milieu, fin) | ✅ CONFORME |
|
||||
| **Accepter Unicode (émojis, accents, etc.)** | ✅ Support UTF-8 complet | ✅ CONFORME |
|
||||
| **Vérifier contre les mots de passe compromis** | ✅ API Have I Been Pwned avec k-anonymity | ✅ CONFORME |
|
||||
| **Pas d'obligation de composition** | ✅ Pas d'erreur si manque majuscules/chiffres/spéciaux | ✅ CONFORME |
|
||||
| **Pas de changement périodique forcé** | ✅ Aucune expiration automatique | ✅ CONFORME |
|
||||
| **Permettre les phrases de passe** | ✅ "Mon chat Félix a 3 ans!" accepté | ✅ CONFORME |
|
||||
|
||||
### 🔑 Règles pour les identifiants
|
||||
|
||||
#### **Username (Nom d'utilisateur)**
|
||||
- **Longueur** : 8 à 64 caractères
|
||||
- **Caractères acceptés** : TOUS (lettres, chiffres, espaces, accents, symboles, emojis)
|
||||
- **Exemples valides** :
|
||||
- `jean dupont 75`
|
||||
- `Marie-Claire.2024`
|
||||
- `Pompier Paris 🚒`
|
||||
- `utilisateur@amicale`
|
||||
|
||||
#### **Password (Mot de passe)**
|
||||
- **Longueur** : 8 à 64 caractères
|
||||
- **Aucune règle de composition obligatoire** (plus besoin de majuscules/minuscules/chiffres/spéciaux)
|
||||
- **Phrases de passe recommandées** pour une meilleure mémorisation
|
||||
- **Exemples valides** :
|
||||
- `Mon chat Félix a 3 ans!`
|
||||
- `J'aime les pizzas du vendredi soir`
|
||||
- `Le camion rouge part à 8h30`
|
||||
- `☀️ Soleil brillant sur Paris ☀️`
|
||||
|
||||
### 🎲 Générateurs intelligents
|
||||
|
||||
#### **Générateur de username**
|
||||
Crée des noms d'utilisateur uniques basés sur :
|
||||
- Nom/prénom de la personne
|
||||
- Code postal et ville de l'amicale
|
||||
- Numéro aléatoire pour l'unicité
|
||||
- Peut inclure des espaces et séparateurs (., -, _)
|
||||
|
||||
#### **Générateur de phrases de passe**
|
||||
Génère des phrases de passe mémorables en français :
|
||||
- Phrases naturelles et faciles à retenir
|
||||
- Combinaisons variées (sujets, verbes, compléments)
|
||||
- Ajout optionnel de caractères spéciaux ou emojis
|
||||
- Exemples générés :
|
||||
- `Le chien Max danse dans le jardin!`
|
||||
- `Mon vélo rouge vole 42 fois en été`
|
||||
- `Luna a 7 ans!☀️`
|
||||
|
||||
### ⚠️ Points importants
|
||||
|
||||
1. **Pas de trim()** : Les espaces en début/fin sont préservés et font partie de l'identifiant
|
||||
2. **Pas de vérification password == username** : Sur demande du client, cette règle a été retirée
|
||||
3. **Validation côté API** : L'API vérifie les mots de passe contre la base Have I Been Pwned
|
||||
4. **Rétrocompatibilité** : Les anciens identifiants restent valides
|
||||
|
||||
### 🔄 Impact sur l'expérience utilisateur
|
||||
|
||||
| Aspect | Avant | Après NIST |
|
||||
|--------|-------|------------|
|
||||
| **Complexité** | Règles strictes difficiles à mémoriser | Liberté totale, phrases naturelles |
|
||||
| **Longueur password** | 12-16 caractères obligatoires | 8-64 caractères flexibles |
|
||||
| **Caractères spéciaux** | Obligatoires | Optionnels |
|
||||
| **Mémorisation** | Mots de passe complexes oubliés | Phrases personnelles mémorables |
|
||||
| **Sécurité** | Règles arbitraires | Vérification contre bases de données compromises |
|
||||
|
||||
## 🎯 Gestion des rôles
|
||||
|
||||
### Hiérarchie des permissions
|
||||
|
||||
Reference in New Issue
Block a user