IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Réseau/Web Python Discussion :

[Firebase] Authentification utilisateur dans un programme py


Sujet :

Réseau/Web Python

  1. #1
    Membre habitué
    Homme Profil pro
    Ingénieur Informatique et Réseaux
    Inscrit en
    Avril 2011
    Messages
    232
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur Informatique et Réseaux
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2011
    Messages : 232
    Points : 182
    Points
    182
    Par défaut [Firebase] Authentification utilisateur dans un programme py
    Bonjour,
    Je ne sais pas si je poste sur le bon forum, mais je n'en ai pas trouvé qui se rapprochent plus.

    J'ai un projet depuis peu mais je n'arrive pas à trouver la bonne méthode (architecture, scripts) pour identifier mon utilisateur dans mon programme Pyhon avec Firebase.

    Voici mon projet :
    Je veux que chaque client ait accès à une interface web (NodeJS déployé sur Google Host) permettant d'afficher des informations stockées en base de données sécurisé par utilisateur (Firestore de Firebase).
    Ces informations seront mises à jour depuis des Raspberry (une par client) qui sera connectée à son réseau local avec un accès à internet.

    L'authentification est une simple connexion via email et mot de passe.
    Pour que cela soit bien sécurisé, il faudrait que la raspberry se connecte via email et mot de passe du client afin d'hériter de ses droits.

    Pour la partie Site Web en NodeJS et déploiement sur Google Host, pas de problème.

    Pour la partie Python et connexion Firebase c'est une autre histoire, j'ai lu beaucoup d'articles et vu pas mal de vidéo avec plein de solutions mais je n'arrive pas à comprendre les mécanismes d'authentification :

    Avec Firebase Admin SDK :
    * Soit c'est une authentification par compte de service, pas top au niveau sécurité en mettant les clés privés sur une raspberry chez un client
    * Soit via un token utilisateur mais je n'ai pas trouvé le script qui va bien. De plus comment transmettre le token à ma Raspberry de façon simple et sécurisé ?

    Avec Pyrebase :
    Parfait car authentification via l'email et mot de passe utilisateur par contre ne supporte que Database et pas Firestore

    Avec google-cloud-firestore :
    Je ne comprends pas comment authentifier mon utilisateur.

    Pourriez vous m'aider dans l'architecture et le paramétrage de ce projet ?

    Je vous remercie d'avance,
    Spiritkill

  2. #2
    Expert éminent sénior
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 235
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 235
    Points : 15 532
    Points
    15 532
    Par défaut
    pour faire cela, je pense que vous pouvez déjà garder le site en nodejs qui se connecte à la base de données.
    par contre les raspberry n'auront pas les codes de la base de données mais enverront les données à une API de votre site. ainsi ça sera votre application en nodejs qui contrôlera tout ce qu'il se passe avec la base de données.

    est ce que vos client ont un intérêt à falsifier les données envoyées par les raspberry ?

  3. #3
    Membre habitué
    Homme Profil pro
    Ingénieur Informatique et Réseaux
    Inscrit en
    Avril 2011
    Messages
    232
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur Informatique et Réseaux
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2011
    Messages : 232
    Points : 182
    Points
    182
    Par défaut
    Bonjour,
    Merci pour votre réponse.
    Pour le site NodeJS je comptais bien le garder.

    Par contre pour les API c'est une bonne idée, cependant comment passer l'information qu'il s'agisse du client A et pas du B pour que les données soient stockées ou récupérées depuis le bon endroit par rapport au client ?

    Les données d'un client ne sont pas confidentielles pour lui et il n'y a pas d'importance s'il les falsifie. Par contre il ne doit pas avoir accès au données des autres clients.

  4. #4
    Expert éminent sénior
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 235
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 235
    Points : 15 532
    Points
    15 532
    Par défaut
    il suffit que le raspberry envoie l'identifiant client en même temps que les données.

    après, il reste un risque que le client bricole ce numéro et envoie les données vers un autre client. donc cela peut être protégé en utilisant une chaine de caractères aléatoires unique pour chaque client.

  5. #5
    Membre habitué
    Homme Profil pro
    Ingénieur Informatique et Réseaux
    Inscrit en
    Avril 2011
    Messages
    232
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur Informatique et Réseaux
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2011
    Messages : 232
    Points : 182
    Points
    182
    Par défaut
    Merci pour la réponse.
    J'avais effectivement pensé au UID de l'utilisateur enregistré qui est unique.

    Merci pour les réponses.
    Je vais pouvoir avancer et tester ces points.

  6. #6
    Membre habitué
    Homme Profil pro
    Ingénieur Informatique et Réseaux
    Inscrit en
    Avril 2011
    Messages
    232
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur Informatique et Réseaux
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2011
    Messages : 232
    Points : 182
    Points
    182
    Par défaut
    Bonjour,
    Je reviens sur ce sujet après avoir testé la partie fonction de Firebase.
    Dans mon contexte j'ai 2 points qui ne me satisfont pas :
    1 - Je dois activé la facturation sur mon projet
    2 - Mon programme PI va devoir aussi lire des données dans Firestore hors en mode fonction je doit l'appeler régulièrement afin d'être à jour (ce qui me ferait potentiellement dépasser les quota gratuit).

    Pour palier à ce 2eme point il faut utiliser un listener via "on_snapshot" afin que le décompte de quota ne se fasse seulement à mise à jour d'un document.
    Pour cela il faut utiliser Firebase Admin SDK. https://firebase.google.com/docs/fir...ry-data/listen

    Je vois clairement comment me connecter avec un compte de service qui donne tous les droits, cependant je ne vois pas comment se connecter en tant qu'utilisateur afin d'hériter de la restriction de droit (règles de Firestore) de cet utilisateur. Je souhaiterais pouvoir me connecter soit avec l'email/mot de passe soit avec le token de l'utilisateur que je pourrais récupérer d'une autre manière.

    Si quelqu'un a une idée, je suis preneur.

    Merci

  7. #7
    Expert éminent sénior
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 235
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 235
    Points : 15 532
    Points
    15 532
    Par défaut
    Citation Envoyé par Spiritkill Voir le message
    Mon programme PI va devoir aussi lire des données dans Firestore
    donc le programme sur les pi ne passeront pas par votre site ?

  8. #8
    Membre habitué
    Homme Profil pro
    Ingénieur Informatique et Réseaux
    Inscrit en
    Avril 2011
    Messages
    232
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur Informatique et Réseaux
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2011
    Messages : 232
    Points : 182
    Points
    182
    Par défaut
    Non le site sera sur Google Host.
    Le programme Python sera chez chaque client sur un RPI qui devrait se connecter comme un client classique pour accéder au Firestore du Projet sur Google.

    Je suis parti sur Python parce qu'il existe des API pour contrôler les entrées/sorties de la RPI. Je peux peut être monter un site web sur la Raspberry pour faire la connexion à Firebase et ensuite je pilote les entrées/sorties de la Raspberry en backend mais j'avoue que je n'ai jamais fait ça sans Python.

    Merci

Discussions similaires

  1. Réponses: 2
    Dernier message: 25/11/2010, 13h55
  2. Réponses: 4
    Dernier message: 07/07/2010, 13h36
  3. Réponses: 2
    Dernier message: 24/02/2009, 15h20
  4. Réponses: 2
    Dernier message: 17/07/2008, 19h26
  5. Authentification des utilisateurs dans une application web
    Par mejdac dans le forum Tomcat et TomEE
    Réponses: 2
    Dernier message: 22/03/2007, 14h17

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo