2014-12-25 13 views
6

REST bahar önyüklemesinde kullanıcıların yetkilendirilmesi ve kimlik doğrulaması için en iyi uygulama nedir?Yay önyükleme REST belirteci yetkilendirme ve kimlik doğrulaması en iyi yöntemler

Mobil cihazlar için standart sayfalar + REST API ile web uygulaması yapıyorum. İlkbahar güvenliği ile ilgili birçok makaleye baktım ve temel olarak çoğu REST çağrılarına izin verecek ya da engelleyecek bir çeşit uyumlayıcı yaklaşıma sahip. Ancak benim durumumda, kullanıcının kim olduğuna bağlı olarak bazı mantıksal mantığım var. Örneğin, kullanıcı bilgilerini güncelleyen bir /update API'si vardır ve kullanıcı kendini güncelleyebilir, ancak diğer kişiyi güncelleyemez.

  • Kullanıcı kimlik doğrulama API çağrıları ve
  • Sistemi, kısa ömürlü kod oluşturulur, veri tabanında kaydeder adı/şifre veya çerez pass: Başlangıçta sonraki yetkilendirme şemasını kullanmak düşündüm.
  • Kullanıcı bu belirteci alır, çerezini güncelleştirir (böylece web uygulamasındaki JS okuyabilir ve kullanabilir)
  • REST çağrısı yapılıyorken çerezler iletilir. Kontrolörde, jeton çıkarılır, son kullanma tarihi kontrol edilir, sorgu jetonu doğrulamak ve kullanıcı kimliğini almak için veritabanına yapılır.
  • Kullanıcı kimliğine bağlı olarak REST izni alınacak veya engellenecektir.

Uygulamak için doğru yaklaşım bu mu? Bahar önyükleme güvenliği hakkında makaleler okuduktan sonra kafamda oldukça büyük bir karışıklık var. En azından: oturum yetkisi benim için çalışmaz (REST vatansız). Buraya giriş/şifre saklamaksızın mobil cihaz için yetki vermek istiyorum.

Bu belirtecin REST bedeninin kendisinde geçmesi mantıklı mı? GET yöntemi ne durumda?

Bilginizi paylaştığınız için çok teşekkürler.

+0

Sadece merak, ama ne avantajı bir veritabanında depolanan kimlik doğrulama durumu üzerinde depolanan belirteci durumunun ne olduğunu düşünüyorsunuz Seans (hangi ile devam etmek için uğraşmak zorunda kalmadan çalışmak daha kolay)? –

+0

Dinlenme vatansız. Oturum yok. İkincisi: her iki durumda da (oturumda bile), oturum değerlerini bir yere koymanız gerekir. Bazıları redis kullanıyor, ben inatçı istiyorum. – Tigran

+0

Güvenlik durumu durumu. Ve TCP durum bilgisi. Yani eğer bunlardan birini kullanmak istiyorsan, vatansız olmayacaksın. Stackoverflow hakkında yorumlarda bulunmanın anlamsız bir tartışmasıdır, ancak önceliklerinizi yeniden değerlendirmeniz gerektiğini düşünüyorum (ya da “vatansız” olarak yeniden tanımlamak). –

cevap

3

Sorununuza bir çözüm buldunuz mu?

Gelecekte diğer geliştiriciler/istemciler için API'yı açmak istemediğinizden eminseniz (başka bir deyişle, OAuth'a bakmanız gerekir) basit bir belirteç tabanlı çözüm bu sorunu başka bir yerde yanıtladı çalışacak.

  • Kurulum standart html giriş sayfası, bir bir başarı ile gerçekleştiren giriş bir çerez dönmek için app kullanıcı girişi için
  • Kurulum bahar güvenliğini kullanabileceği: temelde bu çizgisinde

    şey kimlik doğrulama belirteci

  • mobil uygulamanızda bir WebView (veya eşdeğeri) gömün ve bu oturum açma formunu yükleyin - kullanıcının o web görünümü üzerinden oturum açmasına izin verin, yanıt üzerine çerezi yakalayın ve belirteci saklayın (mobil genellikle tek kullanıcıdır, siz mobil kullanıcıları kaydetmek için oldukça uzun süre saklayabilirler)
  • Belirteçle kimlik doğrulaması yapmak için REST API'sine bir güvenlik filtresi ekleyin (örneğin, mobil uygulamadan başlığındaki belirteci geçirin) - sonra geçerli kullanıcılar için normal yaylı kimlik doğrulama bağlamını kullanabilirsiniz.

Bu yaklaşım, Google tarafından şu şekilde önerilmektedir: (EDIT: Google, orijinal olarak Google+ oturumunu ve OAuth2'yi kullanmakla ilgili olarak okuduğum sayfayı değiştirmiş görünüyor.

Overview of the approach using Spring security

The code & details

bu olmasına rağmen: - 0 Ben de burada benim uygulanmasını yazdım

genel Mobil/API docs so here it is in the web archive :)) bir bağlantı göremiyorum Gerçekten sadece bir deney/Kavram Kanıtı, düşüncenize faydalı olabilir.

+2

REST, çerez kullanmamalı. Vatansız. Bunun yerine jeton yetkilendirmesi için gidin. –

0

Çerez yaklaşımı kullanım durumu için mükemmel görünüyor. Jeton kullanıcı kimliği ile bağlanabilir. Filtre çerezleri ayıklayabilir ve kullanıcı kimliğini apis için üstbilgiye aktarabilir - GET'e dikkat etmeliyiz ...

İlgili konular