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

Android Discussion :

[REST] Authentification sur Android


Sujet :

Android

  1. #1
    Membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2007
    Messages
    142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Août 2007
    Messages : 142
    Points : 52
    Points
    52
    Par défaut [REST] Authentification sur Android
    Bonsoir à tous,

    Voila j'ai mis en place un service web REST et j'ai besoin d'authentifier mes clients.
    J'ai vu qu'il existait plusieurs méthode dont celle du jeton d’authentification, que je vais détailler le fonctionnement:

    L'idée consiste à envoyer, dans un 1er temps, un couple login/password et de récupérer un token en retour. Dans un second temps, ce token devra être utilisé à la place du password pour les requêtes suivantes. Ceci permet, coté serveur, de gérer la durée de validité des tokens (à 20 minutes par exemple).

    Mais ce qui me pose problème, c'est que en REST il n'y a pas d'état (Stateless). Comment est ce que le serveur peut identifier le token du client?, ceci impose de faire persisté le token généré par le serveur soit en base de donné ou en session, dans les deux cas on casse le principe de REST!

    Pouvez vous m'aider svp?

  2. #2
    Rédacteur
    Avatar de David55
    Homme Profil pro
    Ingénieur informatique
    Inscrit en
    Août 2010
    Messages
    1 542
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2010
    Messages : 1 542
    Points : 2 808
    Points
    2 808
    Par défaut
    Bonjour,

    Citation Envoyé par Rohan21 Voir le message
    Ceci impose de faire persisté le token généré par le serveur soit en base de donné ou en session
    Oui effectivement, une session ca peut être bien.

    Citation Envoyé par Rohan21 Voir le message
    on casse le principe de REST!
    Quel principe? C'est l'homme qui crée les principes donc on peut bien les changer
    Plus sérieusement, REST est un outil, il n'y a pas vraiment de contrainte. J'utilise des sessions dans mes WS et ca n'a jamais posé de problème à personne
    Ce qui veut dire que si tu as besoin de session, utilises les sessions! Surtout s'il n'y a pas d'autre solution!!!

    Liens intéressants : http://blog.nicolashachet.com/niveau...e-en-5-regles/
    http://stackoverflow.com/questions/6...te-restfulness

  3. #3
    Membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2007
    Messages
    142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Août 2007
    Messages : 142
    Points : 52
    Points
    52
    Par défaut
    Bonjour David55,

    Je pensais que le serveur ne devais pas se soucier du contexte du client. Pourquoi on dit qu'il n'y a pas d'état dans REST?

    Merci pour les liens, je vais les consulter
    Cdt,

  4. #4
    Expert éminent

    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Février 2007
    Messages
    4 253
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2007
    Messages : 4 253
    Points : 7 618
    Points
    7 618
    Billets dans le blog
    3
    Par défaut
    En tant que fervant défenseur de REST... un web-service ne peut pas être REST si il n'est pas "Stateless" (donc sans session coté serveur)...
    Il ressemblera à du REST, il aura le goût du REST, mais ne sera pas vraiment REST

    Le token, ton serveur y met ce qu'il veut....

    Token "decrypté": {salt}:{datevalidité}:{userid}:{hash}
    Le salt étant par exemple une chaine aléatoire.
    datevalidité ben la durée de validité du token.
    userid l'identifiant interne (souvent un nombre) de l'utilisateur.
    hash un code de hash de tout ce qui précède.

    Ainsi à la réception d'une requête, il "suffit" de vérifier que le "hash" est correct, que la date de validité est bonne... et bim... le userid est autorisé et validé, sans même vérifier dans la table des utilisateurs.

    On peut aussi rajouter d'autres informations comme l'@ IP de l'origine.
    Vérifier que le salt s'incrémente à chaque requête (ainsi un nouveau token invalidera obligatoirement le précédent), etc...
    N'oubliez pas de cliquer sur mais aussi sur si un commentaire vous a été utile !
    Et surtout

  5. #5
    Membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2007
    Messages
    142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Août 2007
    Messages : 142
    Points : 52
    Points
    52
    Par défaut
    Merci David 55 pour ta réponse et pour tous ces éléments.

  6. #6
    Rédacteur
    Avatar de David55
    Homme Profil pro
    Ingénieur informatique
    Inscrit en
    Août 2010
    Messages
    1 542
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2010
    Messages : 1 542
    Points : 2 808
    Points
    2 808
    Par défaut
    Merci Rohan21 de me remercier

    Mais je pense que tu voulais plutot remercier Nicroman qui a donné une réponse tout de même plus juste

  7. #7
    Membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2007
    Messages
    142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Août 2007
    Messages : 142
    Points : 52
    Points
    52
    Par défaut
    Effectivement je voulais remercier nicroman , mais merci à vous deux

    Je récapitule les étapes de l'authentification du client à mon service REST.

    1) GET: http://api.auth/?login=monlogin?pwd=123456

    2) Le serveur vérifie le couple login et pwd dans la base de donnée, le mot de passe étant crypté en md5 + clée de cryptage

    3) Si OK=> Création de timestamp, Génération du token grâce à l'id du client, timestamp et clée de cryptage)

    4)Le serveur répond en lui attribuant le token précédemment créer

    5) Le client pour chaque nouvelle requête devra, construire la requête de cette façon GET: http://api.auth/?token=token_créer_à_letape_3

    Est ce que c'est le bon déroulement?

  8. #8
    Expert éminent

    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Février 2007
    Messages
    4 253
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2007
    Messages : 4 253
    Points : 7 618
    Points
    7 618
    Billets dans le blog
    3
    Par défaut
    Oui... préférer le passage de token par header (X-MonApp-Auth par exemple), cela permet de bénéficier d'éventuelles mises en cache, même si le token a changé
    N'oubliez pas de cliquer sur mais aussi sur si un commentaire vous a été utile !
    Et surtout

  9. #9
    Membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2007
    Messages
    142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Août 2007
    Messages : 142
    Points : 52
    Points
    52
    Par défaut
    merci beaucoup!

  10. #10
    Membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2007
    Messages
    142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Août 2007
    Messages : 142
    Points : 52
    Points
    52
    Par défaut
    J'aimerai savoir si c'est risqué de d'envoyer le couple login/mdp par
    GET: http://api.auth/?login=monlogin?pwd=123456

    Doit on envoyer les informations au serveur par POST dans un contexte purement REST?

    Merci

  11. #11
    Rédacteur
    Avatar de David55
    Homme Profil pro
    Ingénieur informatique
    Inscrit en
    Août 2010
    Messages
    1 542
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2010
    Messages : 1 542
    Points : 2 808
    Points
    2 808
    Par défaut
    En post c'est mieux et encodé encore mieux

  12. #12
    Membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2007
    Messages
    142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Août 2007
    Messages : 142
    Points : 52
    Points
    52
    Par défaut
    Quel est l'inteêt d'encoder le login et le mot de passe?

  13. #13
    Rédacteur
    Avatar de David55
    Homme Profil pro
    Ingénieur informatique
    Inscrit en
    Août 2010
    Messages
    1 542
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2010
    Messages : 1 542
    Points : 2 808
    Points
    2 808
    Par défaut
    A ne pas te faire hacker? Si j'ai ton login et ton mot de passe je pourrais obtenir des infos en appelant ton WS. C'est une sécurité.

  14. #14
    Membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2007
    Messages
    142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Août 2007
    Messages : 142
    Points : 52
    Points
    52
    Par défaut
    Oui mais on peut toujours décoder l'url?

  15. #15
    Modérateur
    Avatar de Hizin
    Homme Profil pro
    Développeur mobile
    Inscrit en
    Février 2010
    Messages
    2 180
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France

    Informations professionnelles :
    Activité : Développeur mobile

    Informations forums :
    Inscription : Février 2010
    Messages : 2 180
    Points : 5 072
    Points
    5 072
    Par défaut
    Si tu connais la porte, mais que tu n'as pas la clef, c'est toujours plus difficile qu'avec celle-ci.

    Un peu de sécurité que diable.
    C'est Android, PAS Androïd, ou Androïde didiou !
    Le premier est un OS, le second est la mauvaise orthographe du troisième, un mot français désignant un robot à forme humaine.

    Membre du comité contre la phrase "ça marche PAS" en titre et/ou explication de problème.

    N'oubliez pas de consulter les FAQ Android et les cours et tutoriels Android

  16. #16
    Expert éminent

    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Février 2007
    Messages
    4 253
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2007
    Messages : 4 253
    Points : 7 618
    Points
    7 618
    Billets dans le blog
    3
    Par défaut
    Déjà... surtout... utiliser https au lieu de http !!!

    Après que le pwd soit dans l'url ou dans le contenu du message http, peu importe.
    Et si on est en https, l'encoding n'est pas très utile.


    D'autant que l'encoding fixe ne permet en rien de sécuriser l'application... surtout dans le cas du "man in the middle".
    Imaginons, l'application envoie "http://xxxxxxxx/login?user=moi&pwd=monpass"... Tout va bien, ca marche, mais tout est en clair. Résultat, n'importe qui peut utiliser l'application et le login "moi / monpass"

    L'application envoie "http://xxxxxxxx/login?user=moi&pwd=ZEHHABNZE" avec ZEHHABNZE l'encoding de "monpass"... Tout va bien, ça marche toujours, et personne ne peut deviner quel mot de passe va donner ZEHHABNZE.
    Par contre, n'importe qui peut faire un appel à "http://xxxxxxxx/login?user=moi&pwd=ZEHHABNZE" et ainsi se faire passer pour "moi" !
    N'oubliez pas de cliquer sur mais aussi sur si un commentaire vous a été utile !
    Et surtout

Discussions similaires

  1. Problème avec les services web rest sur android
    Par JacNar6 dans le forum API standards et tierces
    Réponses: 9
    Dernier message: 24/09/2013, 17h41
  2. Réponses: 2
    Dernier message: 06/02/2006, 09h28
  3. Réponses: 9
    Dernier message: 30/08/2005, 09h17
  4. [VB.NET] Authentification sur serveur mail ?
    Par Webman dans le forum ASP.NET
    Réponses: 2
    Dernier message: 26/05/2004, 19h24
  5. [C#] Authentification sur les fichiers Pdf
    Par ensisoft dans le forum ASP.NET
    Réponses: 14
    Dernier message: 04/05/2004, 12h10

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