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

Python Discussion :

Système de connexion en Python (3.3)


Sujet :

Python

  1. #1
    Futur Membre du Club
    Système de connexion en Python (3.3)
    Salut tout le monde !
    Aujourd'hui j'ai besoin d'un coup de main, je cherche à faire un système de connexion (Identifiant/Mot de passe) ainsi qu'une inscription à partir d'un script Python. Le seul problème c'est que je ne vois pas trop comment faire (Je veux que les identifiants soient stockés sur mon site).
    J'ai déjà regardé SQL qui avait l'air intéressant mais je n'ai pas trouvé de tuto détaillant le côté web (tout les tutos expliquent les bases de données locales).
    Si quelqu'un s'y connait
    Merci !

  2. #2
    Futur Membre du Club
    Personne ne voit comment faire :/ ?

  3. #3
    Expert éminent
    Bonjour,

    Pour les mots de passe, le principe est simple:

    - crypter le bon mot de passe avec un algorithme qui ne marche que dans un sens => module hashlib par exemple.

    - on ne conserve que le mot de passe crypté (et pas le mot de passe non crypté qui est détruit!)

    - lorsque l'utilisateur donne le mot de passe de connexion, on lui applique le même algorithme de cryptage, et on vérifie qu'on obtient bien la même chaine que le mot de passe crypté qu'on a conservé.


    Maintenant, la méthode à utiliser pour conserver les identifiants de connexion (nom, mot de passe crypté, et éventuellement adresse email) dépend de beaucoup de choses:

    - Exemple, le serveur web a-t-il mysql comme SGBD (le plus courant)? Y a-t-il une application sur le serveur "html-javascript-php-java" qui devra les utiliser? Etc... Mais ce n'est plus du Python: voir le forum correspondant (php, java, ...)

    - Autre exemple, s'il s'agit de conserver sur internet les identifiants de connexion mais que l'utilisation se trouve uniquement sur un programme Python en local, un simple fichier texte téléchargé par ftp (module ftplib) peut être suffisant.

    - Autre exemple, si on a un hébergement qui supporte Python en CGI, on peut faire un petit script Python qui s'exécutera côté serveur, qui stockera et exploitera à distance les identifiants de connexion dans une base de données sqlite3, et qui renverra le résultat de la vérification au programme Python local.

    Etc... Bref: Il faut préciser le contexte: la question est trop ouverte.
    Un expert est une personne qui a fait toutes les erreurs qui peuvent être faites, dans un domaine étroit... (Niels Bohr)
    Mes recettes python: http://www.jpvweb.com

  4. #4
    Expert éminent sénior
    Salut,
    Citation Envoyé par Mizugola Voir le message
    Aujourd'hui j'ai besoin d'un coup de main, je cherche à faire un système de connexion (Identifiant/Mot de passe) ainsi qu'une inscription à partir d'un script Python. Le seul problème c'est que je ne vois pas trop comment faire
    Je suis d'accord avec Tyrtamos.

    Pourquoi ne pas utiliser un système d'authentification existant?
    La plupart des frameworks Web Python intègrent les bibliothèques permettant de réaliser cela. Il suffit d'apprendre a les configurer.
    Ca laisse plus de temps pour développer les fonctionnalités spécifiques de l'application - celles qu'attendent les utilisateurs.

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  5. #5
    Futur Membre du Club
    Réponse
    Pour répondre :
    Oui mon hébergeur possède mySQL
    La solution d'utiliser FTPLib n'est pas mal non plus mais dans ce cas je devrais mettre mes identifiants FTP dans le fichier Python, donc à la disposition de tout le monde, ce qui ne me plait pas beaucoup.

    Et pour le hashlib j'avais déjà prévu de le faire du coup
    Donc peut-importe la solution FTP / SQL mais pour la SQL je ne sais pas comment faire avec le web et pour le FTP, mes ID FTP seront publiques !

  6. #6
    Expert éminent
    Bonjour,

    Tout dépend de ton projet.

    Imaginons que le programme utilisateur nécessite l'identifiant de connexion, mais que l'obtention de cet identifiant passe par toi par internet. Dans ce cas, tu devrais avoir le droit d'écriture par ftp, et le programme utilisateur n'a que le droit de lecture par httplib, donc sans tes codes de connexion ftp.

    Voilà un exemple concret: j'ai mis un simple fichier texte sur mon propre site (je le laisse 1 mois) qui s'appelle "utilisateur.txt" avec la seule ligne: "toto,motdepassecrypte,adresse_email". Son adresse http est: "http://infos.jpvweb.com/documents/test/utilisateur.txt". Voilà comment le programme utilisateur peut le lire:

    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    #!/usr/bin/python
    # -*- coding: utf-8 -*-
    #Python 2.7
     
    import httplib
     
    cnx = httplib.HTTPConnection("infos.jpvweb.com")
    cnx.request("GET", "/documents/test/utilisateur.txt")
    rep = cnx.getresponse()
    print rep.status, rep.reason # 200, ok
    texte = rep.read()
    print texte.rstrip().split(',')
    cnx.close()


    La réponse est:

    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    200 OK
    ['toto', 'motdepassecrypte', 'adresse_email']


    On peut imaginer que ce fichier s'appelle comme l'utilisateur (toto.txt) si ce nom est unique. Sinon, créer un numéro client (52.txt) que tu gères en central. On peut imaginer d'autres solutions: par exemple que le fichier s'appelle avec nom+motdepasse transformé par base64. Dans ce cas, si le nom et/ou le motdepasse n'est pas bon, le fichier ne sera pas trouvé. Etc...

    Après, tout dépend du nombre d'utilisateurs: en dessous de 100, la solution ci-dessus est probablement suffisante. Au dessus, il est probable qu'une solution SQL soit meilleure. Mais ce sera beaucoup plus compliqué.

    Tout dépend aussi si c'est un programme commercialisé, et/ou qui touche des données sensibles. Dans ce cas, il vaudrait mieux comme l'a dit wiztricks utiliser un système de connexion existant et déjà éprouvé.
    Un expert est une personne qui a fait toutes les erreurs qui peuvent être faites, dans un domaine étroit... (Niels Bohr)
    Mes recettes python: http://www.jpvweb.com

  7. #7
    Futur Membre du Club
    Merci beaucoup
    Je vais tenter ton système, je te redis si j'ai réussi

###raw>template_hook.ano_emploi###