Web API kimlik doğrulama teknikleri


26

Halklarımız için xml / json hizmetini vermek için bir asp.net MVC web hizmeti çerçevesine sahibiz İstekleri alın, ancak kullanıcıların kimliklerini doğrulamak için en iyi yolu (javascript veya OO dilleri ile kodlayan kullanıcılar için önemsiz) bulmak için çabalıyoruz. Verilerimiz hassas veya herhangi bir şey değil, kullanıcıların kayıt olmasını istiyoruz, böylece değişiklikleri bildirmek ve kullanımı takip etmek için e-posta adreslerini alabiliriz.

Önceki denememizde URI'da kullanıcı adı vardı ve kullanıcı adının var olduğundan ve db tablolarını kullanımla arttırdığından emin olurduk. Bu süper basitti, ancak demoyu bir kullanıcı adı vb. Olarak kullanan insanları görüyoruz, bu yüzden biraz daha sofistike olması gerekiyor.

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


Bir "büyük oyuncu" olarak ne düşünüyorsunuz? Lütfen birkaç örnek veriniz. Bulunduğunuz sırada, lütfen ne yaptıklarını görebilmemiz için "ana oyuncu" API tanımlarına bir bağlantı ekleyin.
S.Lott

twitter / facebook / google / flicker 'in büyük oyuncularını düşünürdüm. developers.facebook.com apiwiki.twitter.com
Steve

Yanıtlar:


10

StackOverflow'ta bu soruyu sordum ve buradan okuyabilirsiniz . Ayrıca kendi soruma cevabımı gör . Hangi kimlik doğrulama ile ilgili, her istek için şifreyi geçmek zorunda olmadan ve SSL veya Şifreleme olmadan. Sadece basit karma.


Çözümünüzü sevdiğimden emin değilim.
Steve

Steve: Flickr çözümünü kullanın

açık kaynaklı bir titreme çözümü var mı, yoksa sadece api'lerini okuyup çözmem gerekiyor mu?
Steve

API'lerini okuyun, çok basit.

Md5 çözümünüz yalnızca "javascript kullanıcıları için önemsiz" tasarıya uygun görünmüyor. Flickr API'sini biraz daha kontrol etmem gerekecek. Buna göz gezdirdim ancak bazı terminolojiyi incelemeliyim. Esas olarak, Frob'un ne olduğu.
Steve

3

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


bu, kullanıcı adını bir api anahtarı olarak adlandırması dışında servise koymakla aynı fikirdir. Birisi javascript ve anahtarını kopyalayıp başka yerde kullanabilirse sayfanın kaynağına bakabilir. Bir api anahtarının çağıran bir etki alanına bağlanmasını ister misiniz, böylece api anahtarının geçerli olması ve xyz.com'dan gelmesi gerekir mi?
Steve

Ayrıca bu @KinGBin'in önerdiğinin bir kopyası mı?
Steve

0

Görsel stüdyoyu kullanmana alıyorum. 4.0 sürümünü kullanarak vs 2010 kullanıyorsanız, vs 2010'da "WCF REST Hizmeti ile API Anahtar Doğrulama" şablonunu inceleyebilirsiniz.


1
Buna bakmak zorunda kalacağım. Kişisel olarak WCF'den uzak durmak istiyorum.
Steve

Bu ilginçti, ancak göründüğü gibi görünüyor ki APIKey'i sorgu dizgisinde geçiriyor. Bu, SSL anahtarının arayan ile aranan arasındaki herkes tarafından görülebileceği anlamına gelmiyor mu?
JMarsch

0

Web servisleri için her zaman HTTP kimlik doğrulamasını kullanırım. Kimlik doğrulama, web sunucunuz tarafından, muhtemelen sizin durumunuzda IIS tarafından gerçekleştirilecektir. Daha sonra IIS'yi veritabanınıza, bir LDAP deposuna veya benzerlerine karşı kimlik doğrulaması yapacak şekilde yapılandırırsınız.

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

EDIT : 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;
}

Bir javascript istemcisi ile bunu nasıl yapardın?
Steve

client = new XMLHttpRequest (); client.open (yöntem, url, zaman uyumsuz, kullanıcı, şifre);
ewindisch

cevaplamak için jquery örneği eklendi
ewindisch

1
bu yüzden kullanıcı adı şifre birleşimi kaynaktaki düz metin içinde kalmalıdır. iyi bir fikir gibi görünmüyor.
Steve

1
Tamam, temel olarak bir api isteğini reddetmek için kullanıcı adınızı / şifrenizi bir giriş ekranına girmeniz gerekecek mi? Bu çözüm korkunç. Halka açık bir web sitesine her kullanıcı kayıtlı olması gerekir?
Steve
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.