P*tain j'aime <3
Question (peut-être que ca a été discuté, mais je retrouve plus):
Normalement, quand une appli redemande des crédentials pour un utilisateur, le serveur ne renvoie pas le refresh_token… Il est donné que la premiere fois, et s'il est perdu, l'ancien token doit être révoqué, puis l'utilisateur doit être ré-authentifier… C'est le cas/c'est prévu ? C'est pas hyper-grave si c'est pas le cas, mais bon…
Sinon, par rapport à l'authentification
J'en avais parlé à la fin de mon dernier message. Je ne suis pas sûr qu'il soit judicieux de faire passer le login/mot de passe dans l'appli. Je voulais savoir si c'était envisageable de proposer un login à base d'une vue web.
En gros, ce que l'appli devrait faire:
- Générer une URL d'authentification, avec en paramètre son client_id, l'url de callback, et éventuellement le scope, si cette notion arrive un jour dans l'API. On peut se baser par exemple sur ce que fait Google (
https://zestedesavoir.com/oauth2/auth?client_id=[...]&callback=[...]
)
- L'utilisateur accède dans une vue au formulaire d'authentification. Si l'utilisateur est déjà connecté (c'est le cas par exemple dans un navigateur), il y a un prompt résumant à quoi aurait accès l'application, le nom, l'auteur et une description de l'application. En dessous, un bouton accepter, et un refuser. S'il n'est pas connecté, il faut un formulaire avec Login/mot de passe, avec les même informations sur l'application.
- Si l'authentification se passe correctement, le site redirige vers l'url de callback, avec en paramètre un code d'authentification (genre
http://mon-site.fr/callback?code=[code]
, ou, s'il s'agit d'une appli native, mon-appli://callback?code=[code]
; à noter qu'en général, les urls de callback sont fixés avant par le développer pour son appli, afin d'éviter que le callback soit utilisé vers un autre site). C'est également vers cette url, avec d'autres paramètre que l'utilisateur sera redirigé en cas d'erreur/de refus
- Ce code est récupéré par l'appli, et échangé contre des tokens, en donnant également son client_secret. (requête POST interne à l'appli vers
https://zestedesavoir.com/oauth2/access_token
, avec le client_secret
, le code, et grant_type=code
dans le form-data de la requête)
Ce flow évite de donner le mot de passe à l'appli, permet d'afficher à l'utilisateur quelques informations sur ce que permet cette autorisation, et permet de montrer qu'on est bien sur ZesteDeSavoir, et que c'est pas juste une appli qui va récupérer son login/mot de passe pour l'utiliser plus tard…
J'aimerais savoir si c'est envisageable de mettre ça en place. Même si c'est pas pour tout de suite! Le login par user/pass ne me pose pas tellement problème, il faut juste se dire que si un jour on a beaucoup d'utilisateurs, et donc des développeurs de l'API, permettre le login par user/pass pour une API, c'est juste pas sérieux! Il suffit que l'appli/le site en question soit pas en HTTPS, et le mot de passe est interceptable, parce que tout passera en clair (il est évident pour moi que l'authentification par vue web se fait en HTTPS )
Voila, désolé de pas avoir réagit plus tôt, j'étais un peu débordé ces derniers temps, mais la ça devrait aller mieux
En tout cas, c'est du beau boulot, ça avance, c'est cool!
Sandhose