PnX-SI/UsersHub

Ajout authentification dans une application simple

aschlegle opened this issue · 6 comments

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.

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.

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.

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.

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

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

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