Aller au contenu principal

Connexion à un compte

L'API SIA permet aux utilisateurs de s'authentifier afin d'obtenir un token JWT, nécessaire pour accéder aux endpoints protégés de l'API.

Endpoint de connexion

L'endpoint de connexion est accessible via une requête POST à l'URL suivante :

https://your.domain.net/auth/login

Données requises

ChampTypeDescriptionObligatoire
emailstringAdresse email du compte✓ Oui
passwordstringMot de passe en clair — la vérification est effectuée côté serveur✓ Oui

Exemple de requête

cURL

curl -X POST https://your.domain.net/auth/login \
-H "Content-Type: application/json" \
-d '{
"email": "katy.perry@capitolrecords.com",
"password": "BonAppétit2017/*"
}'

JavaScript/Fetch

fetch('https://your.domain.net/auth/login', {
method: 'POST',
headers: {
'Content-Type': 'application/json',
},
body: JSON.stringify({
email: 'katy.perry@capitolrecords.com',
password: 'BonAppétit2017/*'
})
})
.then(response => response.json())
.then(data => console.log(data))
.catch(error => console.error('Erreur:', error));

Réponse

Succès (200 OK)

{
"token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOjEsImVtYWlsIjoia2F0eS5wZXJyeUBjYXBpdG9scmVjb3Jkcy5jb20iLCJyb2xlIjoidXNlciIsImlhdCI6MTcxNjIzOTAyMiwiZXhwIjoxNzE2MzI1NDIyfQ.4Jb8vQkXz2mN9pLsYwRtUoD1eHcA6FgTnWqMvXsZkPo",
"account": {
"id": 1,
"username": "katyperry",
"email": "katy.perry@capitolrecords.com",
"role": "user",
"status": "Connecté"
}
}

Le token JWT retourné doit être conservé côté client et transmis dans le header Authorization de chaque requête aux endpoints protégés :

Authorization: Bearer <token>

Structure du payload JWT

Le token JWT contient les informations suivantes dans son payload :

ChampTypeDescription
subintegerIdentifiant unique du compte
emailstringAdresse email du compte
rolestringRôle de l'utilisateur (user, admin, etc.)
iatintegerDate d'émission du token (timestamp Unix)
expintegerDate d'expiration du token (timestamp Unix)

Erreurs

Toute requête effectuée sur cet endpoint avec une méthode autre que POST retournera une erreur 405 Method Not Allowed.

Champ obligatoire manquant (400 Bad Request)

{
"error": "Le champ 'email' est requis"
}

Identifiants incorrects (401 Unauthorized)

{
"error": "Email ou mot de passe incorrect"
}

Par sécurité, l'API ne précise pas si c'est l'email ou le mot de passe qui est incorrect, afin d'éviter l'énumération de comptes existants.

Méthode non autorisée (405 Method Not Allowed)

{
"error": "Method not allowed"
}

Erreur serveur (500 Internal Server Error)

{
"error": "Erreur serveur"
}

Sécurité

  • Le mot de passe est transmis en clair via HTTPS et vérifié côté serveur avec password_verify() de PHP
  • Le token JWT est signé avec l'algorithme HS256 et la clé secrète définie dans la configuration du serveur
  • Le token a une durée de validité limitée, définie par la constante JWT_EXPIRY
  • En cas d'identifiants invalides, l'API retourne systématiquement la même erreur générique, sans distinguer email et mot de passe inconnus