PnX-SI / UsersHub

Application web de gestion centralisée des utilisateurs
GNU General Public License v3.0
13 stars 23 forks source link

Ajout authentification dans une application simple #170

Open aschlegle opened 1 year ago

aschlegle commented 1 year ago

Contexte:

On essaye d'ajouter un système l'authentification à une application simple (juste du front). Pour cela on voudrait atteindre l'api userhub, avec la route auth/login. (Pour rappel je travaille en local et j'essaye d'atteindre des serveurs à distances)

Pistes:

On a 3 pistes pour appeler cette route:

  1. Appeler depuis angular directement: http://url_serveur:5001/pypn/auth/login Une option interressante car elle nous permettrait de faire au plus simple avec juste angular en front. Cependant cette route est protégé en cors: No 'Access-Control-Allow-Origin'

ou

  1. Créer un backend flask pour l'application, et lui ajouter auth/login via https://github.com/PnX-SI/UsersHub-authentification-module/blob/master/README.md

ou

  1. Utiliser le geonature sur le même serveur : http://url_serveur:8000/auth/login Contrairement au 1, pas d'erreur cors dans ce cas là.

Laquelle de ces options semble la meilleure? Je ne suis pas sûr d'avoir bien compris pourquoi la 1 à une erreur "cors" et pas la 3.

bouttier commented 1 year ago

Je ne comprend pas trop ce que tu cherches à sécuriser, en particulier s’il s’agit d’une application « juste du front » ?? Compliqué de répondre sans cette information.

Pour 1., je pense que cela vient simplement du fait que la requête OPTIONS déclenche une 500 sur UsersHub, ce qui fait planter la vérification CORS.

Dans tous les cas UsersHub est un outil vieillissant construit en dehors des standards d’authentification établie, et je ne peux que décourager à l’utiliser pour tous nouveau projet.

Une solution pour exploiter la base de données des utilisateurs de GeoNature (c’est bien ça le but ?) peut être le module mod_authn_dbd d’Apache.

aschlegle commented 1 year ago

Au départ on avait un projet pur js-html-css, et on en a fait un projet Angular. Cela nous a permis d'ajouter un routing: seule la page de base est accessible de tous, les autres pages ne sont accessibles que si on est authentifié.

Mais du coup comme notre projet est un angular simple, on a envisagé de pouvoir directement appeler "/pypn/auth/login" depuis le front (et de ne pas implémenter de backend du tout pour cette application). Il faut noter que j'ai réussi à interroger userhub (http://url_serveur:5001/pypn/auth/login) avec postman. Mais l'erreur cors apparaît lorsque je fais cette requête depuis mon front angular.

Au final notre but est d'interroger la base utilisateur geonature, pour savoir si un utilisateur peut se connecter à l'application ou non.

bouttier commented 1 year ago

Si je comprend bien, les informations à protéger sont contenu dans l’application front elle-même. Auquel cas, que celle-ci refuse de les afficher n’est qu’une illusion de sécurité : finalement les informations confidentielles sont déjà sur le navigateur du visiteur, et un peu de bidouille suffira pour y accéder.

Protéger l’accès à l’application elle-même me semble encore le plus raisonnable, et cela doit être faisable en utilisant les identifiants de GeoNature grâce à mod_authn_dbd d’Apache.

RNF-SI commented 1 year ago

Pour préciser, on est pas sur de l'info avec de la haute sensibilité. C'est d'ailleurs actuellement déjà en ligne mais on souhaite limiter la visualisation à des personnes à qui on autorise l'accès. Après c'est le même principe que GeoNature du coup en terme d'illusion de sécurité.

camillemonchicourt commented 1 year ago

Après c'est le même principe que GeoNature du coup en terme d'illusion de sécurité.

Ben non, justement. Si tu n'as pas l'autorisation d'accéder à un contenu dans GeoNature, le serveur ne te l'autorise pas et renvoie pas, donc pas d'illusion...

RNF-SI commented 1 year ago

parce que ces informations sont contenues dans le back en effet ;) je viens de comprendre