Bir REST API'si için kimlik doğrulama uygulamanın en iyi yolu


21

Mobil cihazlar için sosyal temelli uygulamalar geliştiriyoruz. Her uygulama RESTful API web-servislerini kullanır. Giriş yaparken, genellikle kullanıcı adını ve şifreyi cihazda bir yerde saklarım. Sonra onları gönderirim ve cevap olarak profilime erişirim. Ama bunu yapmanın başka bir yolu olduğunu da biliyorum.

Bir şekilde belirli bir algoritmaya sahip bir belirteç oluşturur ve daha sonra erişim sağlamak için kullanıcı adı ve şifre yerine onu gönderir.

Bunu nasıl uygulamalıyım? Bu jetonu, oturum açma dışındaki her istekle birlikte göndermeli miyim?


11
Bu kimlik doğrulama , yetkilendirme değil . Kimlik doğrulama = sizin söylediğiniz kişi olduğunuzu kanıtlayın. Yetkilendirme = istediğini yapmana izin verildiğini kanıtla.
Ocak'ta 13:13 tdammers

Cevaplarıma aynı yorumu ekleyecektim! +1 sana @tdammers Tüm içerikleri düzenledik, bu yüzden googling yetkisi seni buraya getirmiyor
Shiplu Mokaddim

Yanıtlar:


14

Kimlik doğrulamanın RESTful bağlamında nasıl uygulanacağının birkaç yolu vardır ve giriş / şifre yerine yalnızca belirteçleri göndermek daha güvenlidir: belirteçleri zaman aşımı süresi veya başka bir ölçüt tarafından geçersiz kılmak ve kullanıcıdan yeniden kimlik doğrulamasını istemek kolay olabilir .

Örneğin, kimlik doğrulama REST, HMAC kullanarak ister . Bu yaklaşımda müşterinin ortak ve gizli anahtarları olacaktır . Kimlik doğrulaması gerektiren tüm isteklere publiс anahtarı eklemelisiniz ve isteğinizin özetini hesaplamak için gizli anahtarı kullanmalısınız .

var myRequest = "https://myserver/resource?publicId=12345&param=value";
var requestHash = hmac_implementation(myRequest);
myRequest = myRequest + '&hmac=' + requestHash;

Artık sunucu isteği genel anahtarla belirleyebilir ve requestHash'in kendisini hesaplayabilir . Her iki karma eşitse, kullanıcı yetkilendirilir.

BT, ayrıca bir bilgisayar ağı üzerinden iletişimi güvence altına almak için https kullanmanız gerekir - bu, olası sorunların sayısını önemli ölçüde azaltır.


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.