SORU
18 EKİM 2010, PAZARTESİ


Mobil uygulamalar için bir API oluşturma - Doğrulama ve Yetkilendirme

Genel bakış

Benim uygulama için (DİNLENME) bir API oluşturmak için arıyorum. İlk/birincil amaç mobil uygulamalar ile tüketimi için (iPhone, Android, Symbian, vb) olacaktır. Web tabanlı bir API için kimlik doğrulama ve yetkilendirme için farklı mekanizmalar (diğer uygulamaları inceleyerek) araştırıyordum. Kafamı temel kavramlar en dolandı ama hala birkaç alanda rehberlik arıyorum. Son şey yapmak istiyorum. tekerleği yeniden icat, ama değilim bulma herhangi bir standart çözüm oldu benim kriterleri (ancak benim kriterleri benim olması yanlış bu kadar rahat eleştiri de). Ayrıca, API tüm platformların/uygulamaların alıcı için aynı olmasını istiyorum.

oAuth

Devam edin ve büyük olasılıkla ilk çözüm sunulacak bildiğim için oAuth itirazımı atarım. Mobil uygulamalar için (ya da daha doğrusu olmayan web uygulamaları), yanlış kimlik doğrulama uygulaması (web tarayıcısı gitmek) gitmek gibi görünüyor. Ayrıca, tarayıcı uygulamasını (özellikle cross-platform) geri dönmek için yol (farkındayım) yok. Bu uygulamalar birkaç biliyorum, ama bu bana yanlış geliyor ve uygulama UX bir mola verir.

Gereksinimleri

  1. Kullanıcı uygulaması, kullanıcı adı/parola girer.
  2. Her API çağrısı çağıran uygulama tarafından tanımlanır.
  3. Yükü minimumda tutulur ve auth yönü geliştiriciler için kolay.
  4. Mekanizması son kullanıcı (oturum açma kimlik bilgilerini açık olmayan) yanı sıra geliştirici (uygulama kimlik bilgilerini açık olmayan) her ikisi için de güvenli.
  5. Mümkünse, https (hiçbir şekilde sabit bir gereklilik) gerektirir.

Uygulama Geçerli Düşüncelerim

Harici bir geliştirici API bir hesap ister. Bir apikey ve apisecret alırlar. Her talep, en az üç parametre de gerektirir.

  • apikey - yardımı en geliştirici verildi
  • zaman damgası - belirli bir apikey için her ileti için benzersiz bir tanımlayıcı olarak iki katına çıkar
  • hash - zaman damgası, bir karma apisecret

Bu apikey uygulama tanımlamak için isteği veren gereklidir. Zaman damgası aynı şekilde oauth_nonce davranır ve tekrar saldırıları/azaltır önler. Karma istemek aslında verilen apikey sahibi tarafından verilmiş sağlar.

Kimliği doğrulanmış istekler için (olanlar için bir kullanıcı adına yapılan), hala access_token bir yol ile veya bir kullanıcı adı ve parola karma combo arasında kararsızım. Her iki şekilde de, bir noktada bir kullanıcı adı/parola açılan gerekli olacaktır. Bu olduğunda, birkaç bilgi parçalarını () apikey, apisecret, zaman damgası parola karma kullanılacaktır.Bu yönü hakkında geri bildirim istiyorum.BİLGİNİZE, karma olmadan benim sistem şifreleri saklamak istemiyorum beri ilk şifre karma, gerekir.

Sonuç

BİLGİNİZE, bu uygulama içinde sadece kimlik doğrulama ve yetkilendirme işlemek için sadece genel yapısı API oluşturmak için nasıl bir istek değil.

Rastgele Düşünceler/Bonus Soru

API için tek ihtiyaç bir apikey bir parçası olarak istek, nasıl önüne biri dışında apikey sahibi olmak mümkün görmek apikey (beri gönderilen açık) ve aşırı istekleri bas onlar üzerinde kullanım sınırları? Belki de sadece bunu düşünüyorum, ama orada bir istek apikey sahibine doğrulandı kimlik doğrulaması için bir şey olması gerekmez mi? Benim durumumda, bu asla/karma olmadan bulaşan gösterilir, apisecret amacı oldu.

Karma demişken, ne md5 vs hakkında hmac-sha1? Gerçekten tüm değerleri ile sağlaması olsun, yeterince uzun veri ile (yani. yok apisecret)?

Daha önce bir başına benim kullanıcılar için Kullanıcı/satır tuz parola karma eklemeyi düşünüyor olmuştu. Eğer bunu yaparsam, nasıl bir uygulama tuz kullanılan bilmeden eşleşen bir karma oluşturmak mümkün olabilir mi?

CEVAP
19 EKİM 2010, Salı


Benim projelerde bu giriş kısmını yapmayı düşünüyorum bir şekilde

  1. önce giriş. Bu oluşturulan ve istek sunucuda depolanır, ve muhtemelen sınırlı bir yaşam süresi vardır.

  2. uygulama giriş için kullanıcıların parola hash hesaplar, bir değer almak için login_token ile şifre sağlamalarının ardından, daha sonra login_token karma karma döndürür.

  3. Sunucu login_token, geçerli login_tokens listesinden çıkarılması oluşturulan olmasıdır denetler. Sunucu, daha sonra login_token ile kullanıcının parolasını saklı karma birleştirir ve sunulan kombine token eşleşmesini sağlar. Eğer eşleşiyorsa kullanıcı kimliği var.

Avantajları bu olduğunu hiç mağaza kullanıcı parolasını sunucu, şifre asla geçirilen açık, şifre karma, sadece geçirilen açık hesap oluşturma ( ama olabilir yolu bu), ve öyle olmalı kasadan tekrar saldırılar olarak login_token kaldırılır DB üzerinde kullanın.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Krumme1996

    Krumme1996

    21 EYLÜL 2009
  • RogerBuckChrist

    RogerBuckChr

    9 Temmuz 2011
  • wwjoshdu

    wwjoshdu

    18 ŞUBAT 2011