web-dev-qa-db-fra.com

Techniques d'authentification de l'API Web

Nous avons un framework de service Web MVC asp.net pour servir xml/json pour les gens. Obtenez des demandes mais nous avons du mal à trouver le meilleur moyen (rapide, facile, trivial pour les utilisateurs codant avec javascript ou OO = langues) pour authentifier les utilisateurs. Ce n'est pas que nos données sont sensibles ou quoi que ce soit, nous voulons juste que les utilisateurs s'enregistrent afin que nous puissions avoir leur adresse e-mail pour les informer des changements et suivre l'utilisation.

Lors de notre précédente tentative, nous avions le nom d'utilisateur dans l'URI et nous nous assurions simplement qu'il existait et incrémentions les tables de base de données avec l'utilisation. C'était super basique, mais nous remarquerions que les gens utilisent démo comme nom d'utilisateur, etc. nous avons donc besoin qu'il soit un peu plus sophistiqué.

Quelles techniques d'authentification sont disponibles? Qu'est-ce que les principaux acteurs utilisent/font.

26
Steve

J'ai posé cette question sur StackOverflow et vous pouvez lire ici . Voir aussi ma réponse à ma propre question. Il s'agit précisément d'authentification sans avoir à passer le mot de passe pour chaque demande, et sans SSL ni cryptage. Hachage simple.

10
user2567

Cette vidéo est une façon intéressante d'utiliser une clé API avec votre service WCF/REST. code .

3
Tangurena

Je suppose que vous utilisez Visual Studio. Si vous utilisez vs 2010 avec le framework 4.0, vous pouvez consulter le modèle "WCF REST Service avec vérification de clé API" dans vs 2010.

0
KinGBin

J'utilise toujours l'authentification HTTP pour les services Web. L'authentification elle-même sera gérée par votre serveur Web, probablement IIS dans votre cas. Vous configurerez ensuite IIS pour vous authentifier auprès de votre base de données, un magasin LDAP, ou similaire.

Vous accéderiez alors au nom d'utilisateur via la propriété User.Identity.Name

MODIFIER : Exemple d'authentification JQuery:

/* I found that providing the username and password both in the
   the arguments and in the url parameter seems to have better compatibility,
   if it works well for you, it is highly advisable to remove the 
   user/pass from the url */

function doLogin (){
  $.ajax({
    username: $('#username').val(),
    password: $('#password').val(),
    url: 'https://'+$('#username').val()+':'+$('#password').val()+'@api.example.com',
    dataType: 'jsonp',
    context: $('#result'),
    success: function(d) { $(this).html(d); $(location).attr('href','https://api.example.com/success'); }
    });
    return false;
}
0
ewindisch