Aptli

Authentification

L'authentification vérifie qui vous êtes avant d'accorder l'accès à Aptli. Cette section couvre les méthodes de connexion, la sécurité des comptes, la validation par e-mail et la configuration des fournisseurs OAuth.

Méthodes de connexion actives

Page de connexion montrant les méthodes d'authentification disponibles incluant les fournisseurs OAuth

Configurez quelles méthodes d'authentification sont disponibles :

Nom d'utilisateur/Mot de passe (Par défaut) :

  • Combinaison e-mail + mot de passe
  • Exigences de mot de passe : minimum 8 caractères, règles de complexité
  • Déconnexion automatique après inactivité (configurable, par défaut 1 jour)

Fournisseurs OAuth :

  • OAuth GitHub
  • OAuth Google
  • Fournisseurs supplémentaires configurables (contacter le support)

Configuration : Naviguez vers Paramètres d'application → Authentification → Méthodes de connexion actives

  • Au moins une méthode doit être activée
  • Plusieurs méthodes peuvent être actives simultanément
  • Les utilisateurs choisissent la méthode préférée à l'écran de connexion

Authentification à deux facteurs (2FA)

Profil utilisateur montrant les paramètres 2FA et la configuration de sécurité

Activation de la 2FA :

  1. Naviguez vers le profil utilisateur
  2. Cliquez sur "Activer l'authentification à deux facteurs"
  3. Scannez le code QR avec une application d'authentification (Google Authenticator, Authy, etc.)
  4. Saisissez le code à 6 chiffres pour confirmer
  5. Sauvegardez les codes de récupération (au cas où le téléphone serait perdu)

Connexion avec 2FA :

  1. Saisissez l'e-mail et le mot de passe (ou OAuth)
  2. Le système demande un code à 6 chiffres
  3. Ouvrez l'application d'authentification
  4. Saisissez le code actuel (se rafraîchit toutes les 30 secondes)
  5. Accès accordé

Codes de récupération :

  • 10 codes à usage unique générés lors de la configuration 2FA
  • Stockez-les en sécurité (gestionnaire de mots de passe, copie imprimée)
  • Utilisez si l'authentificateur n'est pas disponible
  • Chaque code valide une fois

Désactivation de la 2FA :

  • Naviguez vers le profil utilisateur
  • Cliquez sur "Désactiver l'authentification à deux facteurs"
  • Saisissez le code à 6 chiffres actuel (ou code de récupération)
  • Confirmez la désactivation

Repérer les utilisateurs sans 2FA

Vue administrateur :

  1. Naviguez vers Admin → Utilisateurs
  2. Ajoutez la colonne : "2FA activé" (booléen)
  3. Filtrez : "2FA activé = faux"
  4. Exportez la liste pour suivi

Application : Paramètres d'application → Authentification → Exiger 2FA

  • Activez pour forcer tous les utilisateurs à configurer la 2FA
  • Période de grâce configurable (ex. 30 jours)
  • Après la période de grâce, les utilisateurs ne peuvent pas se connecter sans 2FA

Campagne de notification :

  • E-mail en masse aux utilisateurs sans 2FA
  • Incluez les instructions de configuration
  • Soulignez les avantages de sécurité
  • Fixez une échéance de conformité

Configuration du fournisseur OAuth

OAuth GitHub

Créer une application OAuth GitHub :

  1. Allez dans Paramètres GitHub → Paramètres développeur → Applications OAuth
  2. Cliquez sur "Nouvelle application OAuth"
  3. Nom de l'application : "Aptli"
  4. URL de la page d'accueil : https://votre-domaine.com
  5. URL de rappel d'autorisation : https://votre-domaine.com/api/auth/github/callback
  6. Cliquez sur "Enregistrer l'application"
  7. Copiez l'ID client et le secret client

Configurer Aptli :

  1. Ajoutez à .env :
    NUXT_OAUTH_GITHUB_CLIENT_ID=votre_client_id
    NUXT_OAUTH_GITHUB_CLIENT_SECRET=votre_client_secret
    
  2. Redémarrez le serveur
  3. Testez : La page de connexion affiche le bouton "Se connecter avec GitHub"

OAuth Google

Créer une application OAuth Google :

  1. Allez dans Google Cloud Console → APIs & Services → Identifiants
  2. Cliquez sur "Créer des identifiants" → ID client OAuth
  3. Type d'application : Application web
  4. Nom : "Aptli"
  5. URI de redirection autorisées : https://votre-domaine.com/api/auth/google/callback
  6. Cliquez sur "Créer"
  7. Copiez l'ID client et le secret client

Configurer Aptli :

  1. Ajoutez à .env :
    NUXT_OAUTH_GOOGLE_CLIENT_ID=votre_client_id.apps.googleusercontent.com
    NUXT_OAUTH_GOOGLE_CLIENT_SECRET=votre_client_secret
    
  2. Redémarrez le serveur
  3. Testez : La page de connexion affiche le bouton "Se connecter avec Google"

Ajouter OAuth au compte utilisateur

Pour les utilisateurs existants nom d'utilisateur/mot de passe :

  1. Connectez-vous avec e-mail et mot de passe
  2. Naviguez vers le profil utilisateur
  3. Cliquez sur "Lier le compte OAuth"
  4. Choisissez le fournisseur (GitHub ou Google)
  5. Autorisez avec le fournisseur
  6. Compte OAuth lié (peut maintenant se connecter avec l'une ou l'autre méthode)

Pour les nouveaux utilisateurs :

  • Première connexion avec OAuth crée automatiquement le compte
  • L'e-mail du fournisseur OAuth doit être dans les domaines autorisés
  • Compte créé avec connexion OAuth uniquement (aucun mot de passe défini)
  • Peut ajouter un mot de passe plus tard depuis le profil

Validation par e-mail

Flux pour nouveau utilisateur :

  1. L'utilisateur s'inscrit (ou l'admin crée le compte)
  2. E-mail de validation envoyé à l'adresse e-mail de l'utilisateur
  3. L'e-mail contient un jeton d'expiration de 10 minutes
  4. L'utilisateur clique sur le lien dans l'e-mail
  5. Compte validé (peut maintenant se connecter)

Validation requise :

  • Ne peut pas se connecter (toute méthode) tant que l'e-mail n'est pas validé
  • Inclut les utilisateurs OAuth (l'e-mail doit être validé même si le fournisseur a vérifié)

Renvoyer l'e-mail de validation : L'admin peut renvoyer depuis le profil utilisateur :

  1. Naviguez vers Admin → Utilisateurs
  2. Ouvrez le profil utilisateur
  3. Cliquez sur "Renvoyer l'e-mail de validation"
  4. Nouveau jeton de 10 minutes envoyé

Validation manuelle : L'admin avec usersUpdate peut valider manuellement :

  1. Naviguez vers le profil utilisateur
  2. Définissez la date "E-mail validé" à la date actuelle
  3. Sauvegardez (l'utilisateur peut maintenant se connecter)

Sécurité de connexion

Nombre maximum de tentatives de connexion :

  • Par défaut : 5 tentatives échouées
  • Configurable dans les paramètres d'application
  • Après le maximum de tentatives : compte verrouillé en dur
  • Déverrouillage nécessite un admin avec permission usersUpdate

Verrouillage en dur :

  • Le compte ne peut pas se connecter (toute méthode)
  • Visible dans le profil utilisateur : badge "Verrouillage en dur"
  • Déverrouillage : L'admin clique sur l'action "Déverrouiller le compte"
  • Réinitialisation : Le compteur de tentatives échouées réinitialisé à 0

Expiration de session :

  • Déconnexion automatique : Délai d'inactivité (par défaut 1 jour)
    • La lecture ou l'écriture de données réinitialise le compte à rebours
    • Configurable par paramètres d'application
  • Expiration du jeton CSRF : Délai d'expiration de session serveur (par défaut 1 semaine)
    • Force la reconnexion indépendamment de l'activité
    • Mesure de sécurité pour les sessions longues
  • Expiration de session : Durée maximale absolue de session (par défaut 1 semaine)
    • Empêche les sessions indéfinies

Session active unique :

  • Aptli n'autorise qu'une seule session active par compte à la fois
  • Se connecter sur un nouvel appareil vous déconnecte des autres appareils
  • Vous verrez un avis et serez invité à vous reconnecter sur l'appareil déconnecté
  • Deux onglets ou fenêtres dans le même profil de navigateur partagent une session — ils ne se déconnectent pas mutuellement

Déconnexion forcée

Action administrateur :

  1. Naviguez vers Admin → Utilisateurs
  2. Ouvrez le profil utilisateur
  3. Actions → Déconnexion forcée
  4. La session de l'utilisateur est terminée immédiatement
  5. L'utilisateur doit se reconnecter

Cas d'utilisation :

  • Incident de sécurité (compte compromis)
  • L'utilisateur a laissé la session ouverte sur un ordinateur public
  • Verrouillage administratif (en attente d'investigation)

Dépannage de connexion

L'utilisateur ne trouve pas son compte

Vérifiez :

  1. Naviguez vers Admin → Utilisateurs
  2. Filtrez par e-mail (sensible à la casse)
  3. Si non trouvé : Le compte peut être supprimé
  4. Cliquez sur le bouton "Voir supprimés" (nécessite la permission viewDeleted)
  5. Si trouvé dans supprimés : Annulez la suppression (nécessite la permission usersCreate)

Verrouillage en dur

Vérifiez :

  1. Naviguez vers le profil utilisateur
  2. Cherchez le badge "Verrouillage en dur"
  3. Si présent : Cliquez sur "Déverrouiller le compte" (nécessite la permission usersUpdate)
  4. L'utilisateur peut maintenant se connecter

E-mail non validé

Vérifiez :

  1. Naviguez vers le profil utilisateur
  2. Le champ "E-mail validé" devrait avoir une date
  3. Si vide : Renvoyez l'e-mail de validation OU définissez manuellement la date
  4. L'utilisateur ne peut pas se connecter via aucune méthode sans validation

Mauvais domaine

Vérifiez :

  1. Naviguez vers Paramètres d'application → Authentification
  2. Liste "Domaines autorisés"
  3. Vérifiez que le domaine e-mail de l'utilisateur est inclus
  4. Si manquant : Ajoutez le domaine OU créez le compte manuellement (contourne la vérification de domaine)

OAuth ne fonctionne pas

Vérifiez :

  1. Vérifiez que les variables d'environnement sont définies (CLIENT_ID, CLIENT_SECRET)
  2. Vérifiez que l'URL de rappel correspond à la configuration du fournisseur
  3. Testez : Déconnectez-vous, cliquez sur "Se connecter avec Fournisseur"
  4. Messages d'erreur dans la console du navigateur
  5. Vérifiez le tableau de bord du fournisseur pour les tentatives d'authentification

Réinitialisation de mot de passe

Initiée par l'utilisateur :

  1. Cliquez sur "Mot de passe oublié" sur la page de connexion
  2. Saisissez l'adresse e-mail
  3. E-mail de réinitialisation envoyé (jeton de 10 minutes)
  4. Cliquez sur le lien dans l'e-mail
  5. Saisissez le nouveau mot de passe
  6. Mot de passe réinitialisé (peut maintenant se connecter)

Initiée par l'admin : L'admin avec usersUpdate peut réinitialiser :

  1. Naviguez vers le profil utilisateur
  2. Actions → Réinitialiser le mot de passe
  3. Mot de passe temporaire généré
  4. E-mail envoyé à l'utilisateur avec mot de passe temporaire
  5. L'utilisateur doit changer le mot de passe à la première connexion

Meilleures pratiques

Activez la 2FA :

  • Exigez pour tous les comptes admin
  • Encouragez pour tous les utilisateurs
  • Fixez une échéance de conformité

Utilisez OAuth quand possible :

  • Réduit la fatigue des mots de passe
  • Tire parti de la sécurité du fournisseur
  • Récupération de compte plus facile

Surveillez les connexions échouées :

  • Examinez les comptes verrouillés en dur hebdomadairement
  • Modèle de verrouillages = attaque de devinette de mot de passe
  • Activez l'application 2FA

Expiration régulière de session :

  • Ne définissez pas le délai d'inactivité trop long (24 heures raisonnable)
  • L'expiration CSRF empêche les sessions indéfinies
  • Équilibrez sécurité vs. commodité utilisateur

Domaines autorisés :

  • Gardez la liste serrée (seulement domaines org)
  • Entrepreneurs externes = créez manuellement (contournez la vérification de domaine)
  • Examinez trimestriellement (supprimez les domaines inutilisés)