Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Investiguer l'authentification par DataPass #294

Closed
florimondmanca opened this issue Jun 20, 2022 · 2 comments
Closed

Investiguer l'authentification par DataPass #294

florimondmanca opened this issue Jun 20, 2022 · 2 comments

Comments

@florimondmanca
Copy link
Collaborator

Motivé par #124 (comment)

Dans le cadre de #124, investiguer la possibilité technique de déléguer l'authentification à DataPass.

Romain a écrit :

Il se trouve qu'aujourd'hui j'ai pour voisin de bureau l'équipe datapass et ils me confirment que l'on peut utiliser datapass comme passerelle d'inscription. L'utilisateur devra se créer un compte datapass (si ce n'est pas déjà le cas) et nous recevrons en retour ses informations et le SIRET de son organisation (qui nous permettra de vérifier le bon ministère) correspondance pour automatiquement valider l'inscription.

@florimondmanca
Copy link
Collaborator Author

florimondmanca commented Jun 21, 2022

Notes en vrac

En réalité, il est un peu impropre de dire "Authentification par DataPass", car DataPass est lui-même utilisateur d'un système d'authentification : le serveur OpenID Connect (OIDC) de https://auth.api.gouv.fr. C'est le code de ce service qui est disponible sur https://github.com/betagouv/api-auth. Il semble néanmoins "taillé pour DataPass", car la page de connexion affiche "Mon compte DataPass". Bref.

La documentation pour utiliser ce serveur OIDC est plutôt parcellaire... Mais d'après le code de DataPass (backend, frontend), il semble bien suivre l'Authorization Code flow de OIDC.

Il faudra donc :

  1. Ajouter du code au client qui appellera un endpoint de proxy côté serveur d'API. Celui-ci devra appeler le Authorization Endpoint (https://auth.api.gouv.fr/authorize).
  2. Ajouter du code au serveur d'API qui implémentera le callback. Ce callback devra appeler le TokenEndpont (https://auth.api.gouv.fr/token) pour obtenir un token puis le userinfo, à faire persister dans un cookie [le navigateur devrait correctement le passer puisque client et serveur d'API sont sur le même domaine]. Le userinfo contiendra un email et les organizations, qui elles-mêmes auront un siret. On pourra alors faire correspondre avec les organisations en base : si un catalogue existe déjà, y rattacher l'utilisateur, sinon suggérer d'en créer un, etc.
  3. Enregistrer notre callback sur auth.api.gouv.fr (via une PR sur leur repo ?).

@florimondmanca
Copy link
Collaborator Author

Avec le détail fonctionnel ici #124 (comment) je pense avoir bien débroussaillé. Côté technique c'est assez clair de comment ça fonctionnerait. Je vais donc fermer ce ticket auquel on pourra se référer à l'avenir.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

1 participant