Authentification

Vue d'ensemble

Cette section présente l'ensemble des endpoints dédiés à l'authentification et à la gestion des sessions utilisateurs. Elle constitue la couche de sécurité fondamentale de notre API, permettant l'identification et l'autorisation des utilisateurs.

Fonctionnalités couvertes

Notre API d'authentification offre un système complet et sécurisé comprenant :

Authentification standard

  • Connexion par nom d'utilisateur/mot de passe
  • Génération de jetons JWT avec date d'expiration
  • Option "Se souvenir de moi" pour les sessions prolongées

Authentification à double facteur (2FA)

  • Initialisation du processus d'authentification avec détection des méthodes OTP disponibles
  • Envoi de codes OTP par SMS, e-mail ou les deux
  • Vérification des codes OTP pour finaliser la connexion

Gestion des sessions

  • Vérification du statut d'authentification en cours
  • Déconnexion sécurisée des sessions actives

Sécurité et flux d'authentification

L'API supporte deux modes d'authentification :

  1. Mode simple : Authentification directe avec /authenticate
  2. Mode 2FA : Processus en plusieurs étapes avec /authenticate/init, réception et vérification OTP

Tous les endpoints utilisent le préfixe /api/v1/authenticate et retournent des jetons JWT sécurisés pour l'autorisation des requêtes subséquentes.

Structure des réponses

Les réponses suivent un format standardisé avec un message de statut et un corps contenant les données pertinentes (jetons, dates d'expiration, méthodes disponibles).

| Action | Endpoint | |---|---| | POST | /api/v1/authenticate | | POST | /api/v1/authenticate/init | | POST | /api/v1/authenticate/receive-otp | | POST | /api/v1/authenticate/verify-otp | | GET | /api/v1/authenticate | | GET | /api/v1/logout |

Authentification

Endpoint: POST /api/v1/authenticate

Authentifie un utilisateur en utilisant son nom d'utilisateur et mot de passe.

Corps de la Requête

{
  "username": "utilisateur@exemple.com",
  "password": "password",
  "rememberMe": true
}

Réponse

{
  "message": "OK",
  "body": {
    "id_token": "jeton-jwt",
    "expired_date": "2025-06-01T00:05:26.143Z"
  }
}

Exemple

curl -X POST https://api.nourama.com/api/v1/authenticate \
  -H "Content-Type: application/json" \
  -d '{"username": "utilisateur@exemple.com", "password": "motdepasse"}'

Initialisation de L'Authentification

Endpoint: POST /api/v1/authenticate/init

Initie la connexion et retourne les méthodes OTP disponibles.

Corps de la Requête

{
  "username": "utilisateur@exemple.com",
  "password": "password",
  "rememberMe": true
}

Réponse

{
  "message": "OK",
  "body": {
    "availableVerificationMethod": {
      "additionalProp1": "string",
      "additionalProp2": "string"
    }
  }
}

Reception de l'otp

Endpoint: POST /api/v1/authenticate/receive-otp

Envoie un code OTP à l'utilisateur.

Corps de la Requête

{
  "login": "utilisateur@exemple.com",
  "method": "EMAIL_AND_SMS"
}

Réponse

{
  "string"
}

Vérification de L'OTP

Endpoint: POST /api/v1/authenticate/verify-otp

Vérifie le code OTP et retourne un jeton JWT.

Corps de la Requête

{
  "login": "utilisateur@exemple.com",
  "password": 123456,
  "rememberMe": true
}

Réponse

{
  "message": "OK",
  "body": {
    "id_token": "jeton-jwt",
    "expired_date": "2025-06-01T00:05:26.143Z"
}
}

Vérification de la Session

Endpoint: GET /api/v1/authenticate

Vérifie si la session actuelle est authentifiée.

Réponse

{
  "message": "success message",
  "body": {}
}

Déconnection de la session en cours

GET /api/v1/logout

Déconnecte la session actuelle.

Réponse

{
  "message": "success message"
  "body": {}
}