L'envoi de nom d'utilisateur et mot de passe pour web service
Je suis le développement d'un service web et j'ai besoin d'envoyer un nom d'utilisateur et mot de passe pour le service dans une méthode GET. Est-il OK pour envoyer cette information dans l'uri, tant que c'est en allant sur un canal sécurisé comme le ssl? En d'autres termes, puis-je avoir un uri qui ressemble à /utilisateurs/{username}/{cleartext_password}?
Edit: Désolé, je crois que j'étais pas clair. Le service web est essentiellement une base de données de noms d'utilisateur et mots de passe hachés. Imaginez une application de bureau qui conserve les noms d'utilisateur et mots de passe dans une base de données distante. L'utilisateur tape leur nom d'utilisateur et mot de passe sur l'application et l'application accède au service web pour authentifier l'utilisateur.
La demande devra envoyer un bout de l'utilisateur nom d'utilisateur et le mot de passe en clair pour le service. Le service prendra le nom d'utilisateur et le mot de passe et vérifiez que le nom d'utilisateur et le hachage du mot de passe le nom d'utilisateur et le mot de passe haché dans la base de données. L'application elle-même devra s'authentifier avant d'accéder au service, mais je me demandais simplement quel est le meilleur moyen pour envoyer de l'utilisateur nom d'utilisateur et mot de passe pour le service pour l'authentification de l'utilisateur final. Je n'ai pas à utiliser une méthode POST, car je suis tout simplement l'authentification et donc de ne pas changer l'état du serveur. Désolé pour la confusion.
Vous devez vous connecter pour publier un commentaire.
Ce faire.
Envoyer une "clé" et un "digest".
La "clé" est équivalent à un nom d'utilisateur.
Le "digest" est un SHA1 (MD5 ou) de hachage de la clé, l'URI et un "secret partagé" ou le mot de passe.
Lorsque le serveur reçoit ce, il calcule sa propre version de le digérer, basé sur la clé de la, URI demandée et le "secret partagé" ou le mot de passe. L'échec de match digère est une erreur 401 réponse.
Si il va sur un canal sécurisé, il n'y a pas de problème lors de l'envoi du nom d'utilisateur et mot de passe en texte clair. J'avais juste recommandé de ne jamais envoyer comme clair au travers d'une insécurité canal et contre l'envoi à plusieurs reprises pour chaque demande.
Ce que vous pourriez faire est d'abord s'authentifier sur le service web (envoyer le nom d'utilisateur et mot de passe via ssl clair) et d'obtenir un jeton à partir du serveur qu'il reconnaîtra. Envoyer ensuite le jeton à chaque demande ultérieure.
En général ce n'est pas une bonne idée... ces données seront présent dans un certain nombre de fichiers de log, par conséquent, les données pourraient être visible pour les personnes qui ne devraient pas voir. À tout le moins, vous devriez hachage ou le chiffrer avant de l'envoyer si vous le pouvez.
Ici est une discussion pour un peu plus de détails... Est HTTPS, la chaîne de requête sécurisé?
SSL ne permet de chiffrer l'URI, mais certainement jeter un oeil à quelques solutions de rechange.
HTTP Basic Auth est agréable et simple, et bien supporté par les navigateurs, serveurs web, etc
Il aussi de ne pas retrouver dans les fichiers journaux au même degré que les Uri
NB: C'est juste un texte brut en-Têtes HTTP, donc definitiely PAS recommandé pour les non-SSL apps.
http://en.wikipedia.org/wiki/Basic_access_authentication