Pour l'instant seul le flow "Authorization code" de OAuth2 est supporté.
client_secret
, on ne peut l'obtenir qu'en en générant un nouveau, ce qui invalide l'ancien).uid
: nom d'utilisateur·ice unique (le "@")email
: adresse emailldapInternalEmail
: adresse email en @bde.enseeiht.fr
(pour les n7iens)fullName
: nom d'affichagefirstName
: prénomlastName
: nom de famillegroupsUids
: uids des groupes dont l'utilisateur·ice est membreet potentiellement d'autres à venir
Se rendre sur https://churros.inpt.fr/developers/apps
Créer une appli
localhost
pour tester, et aussi celle du site en ligne.Copier les deux identifiants (client_id, et surtout client_secret
, on ne peut l'obtenir qu'en en générant un nouveau, ce qui invalide l'ancien).
On met à ta disposition des bibliothèques dans plusieurs langages pour éviter de devoir gérer tout ça à la main.
Hésites pas à demander à net7 par mail (contact@net7.dev) ou à passer au local si t'a besoin d'aide
L'authentification par OAuth se fait en plusieurs étapes.
churros.inpt.fr/authorize
pour lui demander d'autoriser ton service à accéder à son compte Churros.Tu fournis dans l'URL ces paramètres:
client_id
: celui que tu as obtenu en créant l'appliresponse_type
: code
(c'est le seul type de réponse que supporte Churros pour le moment)redirect_uri
: l'URL vers où Churros doit renvoyer l'utilisateur·ice (continues à lire pour comprendre)Donc en somme tu redirige vers, par exemple:
https://churros.inpt.fr/login?client_id=abcdefg&response_type=code&redirect_uri=https://7calibur.fr/login/callback
En supposant que client_id
est abcdefg
et que tu veux rediriger vers https://7calibur.fr/login/callback
Par exemple, tu reçois une requête de la part de l'utilisateur·ice sur
https://7calibur.fr/login/callback?code=loremipsum
Le code d'authorisation est dans ce cas loremipsum
.
Il faut faire une requête POST vers https://churros.inpt.fr/token
En passant dans le corps de la requête:
?code=loremipsum&grant_type=authorization_code&redirect_uri=https://7calibur.fr/login/callback
et en précisant l'en-tête Authorization
, qui prend pour valeur Basic BASE64
, où BASE64
est la version encodée en base 64 de client_id:client_secret
(avec client_id
et client_secret
les deux valeurs obtenues à la création de l'appli).