it-swarm.dev

Web API kimlik doğrulama teknikleri

Biz insanlar için xml/json hizmet vermek için bir asp.net MVC web hizmet çerçevemiz var İstekleri almak ama en iyi yolu (çabuk, kolay, javascript ile kodlayan kullanıcılar için önemsiz anlamaya mücadele veya OO Verilerimizin hassas olması veya herhangi bir şey olması değil, yalnızca kullanıcıların kaydolmasını istiyoruz, böylece değişiklikleri bildirmek ve kullanımı izlemek için e-posta adreslerini alabiliriz.

Önceki denememizde URI'de kullanıcı adı vardı ve sadece kullanıcı adının var olduğundan ve db tablolarını kullanımla artırdığından emin olurduk. Bu çok basitti ama demoyu bir kullanıcı adı vb. Olarak kullanan insanların dikkatini çekerdi, bu yüzden biraz daha sofistike olmamız gerekiyor.

Hangi kimlik doğrulama teknikleri mevcuttur? Büyük oyuncular ne kullanıyor/yapıyor.

26
Steve

Bu soruyu StackOverflow üzerinde sordum ve buradan okuyabilirsiniz . Ayrıca bkz. cevabım kendi soruma. Bu, her istek için şifreyi geçirmek zorunda kalmadan ve SSL veya Şifreleme olmadan kesin olarak kimlik doğrulamasıyla ilgilidir. Sadece basit karma.

10
user2567

Bu video , WCF/REST hizmetinizle birlikte bir API anahtarı kullanmanın ilginç bir yoludur. kod .

3
Tangurena

Görsel stüdyoyu kullanıyorum. 4.0 çerçeve ile 2010 vs kullanıyorsanız, 2010 vs "WCF REST API Anahtar Doğrulaması ile Hizmet" şablonuna bakabilirsiniz.

0
KinGBin

Web hizmetleri için her zaman HTTP kimlik doğrulamasını kullanırım. Kimlik doğrulamanın kendisi web sunucunuz tarafından ele alınacaktır, büyük olasılıkla IIS. Daha sonra IIS bir LDAP deposu, veya benzeri.

Daha sonra kullanıcı adına User.Identity.Name özelliği üzerinden erişirsiniz

DÜZENLE : JQuery kimlik doğrulama örneği:

/* 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