# 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.