# Connexion
La gestion de la connexion au sein de l'application repose sur un protocole OAuth simplifié, sans utiliser de scopes.
# Connexion
Un utilisateur souhaitant se connecter doit envoyer son login et mot de passe à la route /public/token.
Exemple :
{
"grant_type": "password",
"username": "login@novazeo.com",
"password": "password1234!"
}
Si les informations fournies sont correctes, il recevra en réponse :
{
"access_token": "MDNiYzhhZDIzNzU3MGYwNGE1NzQwZjczOGI2NmU3NGM1NTQ2MTdlN2NmMTVhMWM0ODgwYTk3MDVjOTUyZmE0MQ",
"expires_in": 86400,
"token_type": "bearer",
"scope": "user",
"refresh_token": "NzI5ZmE2MDMzNjAzZDYxN2QzYzg5NGU4YzI1MGUxN2UyMGY2NWY3YTY1MGE2NTA4MzU4MGE2NDUyZjlkYmU5OQ"
}
TIP
La date d'expiration du token est configurable dans config/packages/fos_oauth_server.yaml.
# Rôle de l'access_token
L'access_token fourni est le "token de connexion" de l'utilisateur : lorsqu'il présentera ce token à l'API, il agira "en tant que" login@novazeo.com.
La présentation de ce token se fait par le biais du header Authorization, valide sur toutes les routes de l'API.
Authorization: Bearer {access_token}
TIP
La présentation du token est possible sur toutes les routes de l'API, cependant selon la route le token pourrait ne rien changer à la réponse de l'API : cela sera le cas sur les routes /ext et /public.
# Rôle du refresh_token
Le refresh_token peut être utilisé pour re-générer un access_token valide si ce dernier est expiré.
Un refresh_token a lui-même une date d'expiration, mais bien plus longue qu'un access_token.
TIP
L'expiration du refresh_token est configurable et est actuellement fixée à 200 jours.
Afin d'utiliser le refresh_token pour regénérer un access_token, l'utilisateur doit se rendre sur la route /public/token et envoyer :
{
"grant_type": "refresh_token",
"refresh_token": "NzI5ZmE2MDMzNjAzZDYxN2QzYzg5NGU4YzI1MGUxN2UyMGY2NWY3YTY1MGE2NTA4MzU4MGE2NDUyZjlkYmU5OQ"
}
Si son refresh_token est valide, il recevra en échange un access_token valide, un nouveau refresh_token valide et son ancien refresh_token sera invalidé.
Ce mécanisme permet à un utilisateur n'ayant pas utilisé l'application depuis plusieurs jours de se reconnecter automatiquement.
# Gestion des tokens
Les tokens sont en réalité stockés en base de données, et liés à un utilisateur (entre autres).
Lorsqu'une requête entrante utilisant un token est détectée, la base de données est interrogée pour récupérer le token en question, l'associer à un utilisateur et valider la date d'expiration du token.