Kullanıcıların bir web API'sinde yetkili / kimliği doğrulanmış işlemleri nasıl yaptıkları ile özellikle ilgileniyorum.
Kimlik doğrulama çerezleri REST felsefesiyle uyumlu mu ve neden?
Kullanıcıların bir web API'sinde yetkili / kimliği doğrulanmış işlemleri nasıl yaptıkları ile özellikle ilgileniyorum.
Kimlik doğrulama çerezleri REST felsefesiyle uyumlu mu ve neden?
Yanıtlar:
İdeal bir ReSTful hizmeti, istemcilerin (tarayıcıda bulunamayan ) bir istekte gereken herhangi bir görevi yerine getirmesini sağlar ; Çünkü bunun için gereken tam durum sunucu tarafından değil istemci tarafından tutulur. Müşteri devleti tam olarak kontrol ettiğinden, devleti kendi başına yaratabilir (eğer meşru ise) ve sadece "yapılması" için API ile konuşabilir.
Çerez istemek bunu zorlaştırabilir. Tarayıcıların yanı sıra müşteriler için, çerezleri yönetmek, sorgu paramlarına, basit istek başlıklarına veya istek gövdesine kıyasla oldukça büyük bir rahatsızlıktır. Öte yandan, Tarayıcıda, çerezleri kullanmak birçok şeyi daha da kolaylaştırabilir.
Bu nedenle, bir API ilk önce Authorization
ihtiyacı olan kimlik doğrulama verileri için başlığa bakabilir , çünkü muhtemelen tarayıcı dışı istemcilerin koymayı tercih edeceği yer budur, ancak tarayıcı tabanlı istemcileri basitleştirmek ve kolaylaştırmak için bir oturum çerezi de kontrol edebilir. Sunucu tarafı için giriş yapın, ancak yalnızca normal Authorization
başlık eksikse.
Başka bir örnek, normal olarak ayarlanmış çok sayıda parametre gerektiren karmaşık bir istek olabilir. Etkileşimli olmayan bir istemci, tüm bu verileri tek bir istekte sıkışmada sorun yaşamaz; ancak, HTML formuna dayalı bir arayüz, talebi sunmadığı için, kullanıcıların sunmaması için isteği bir kaç sayfaya (bir 'sihirbaz' sayfası kümesi gibi) bölmeyi tercih edebilir. önceki seçimlere göre geçerli olmayan seçeneklerle. Ara sayfaların tümü, değerleri istemci tarafı çerezlerinde depolayabilir, böylece yalnızca kullanıcının isteği gönderdiği son sayfanın hiçbir sunucu tarafı etkisi olmaz. API, talep gövdesinde ihtiyaç duyulan özellikleri arayabilir ve gerekli parametreler bulunmuyorsa çerezlere geri dönebilir.
Düzenleme: RE @ @ Konrad adlı kullanıcının yorumunda:
Karşılaştırıldığında belirteçleri uygulamak zordur, çünkü belirteci bir yere koymadan kolayca geçersiz kılamazsınız.
er ... sen sunucu tarafındaki çerezleri onaylıyorsun, değil mi? Eğer sırf anlattı 24 saat sonra bir çerez atmak için tarayıcıyı o olacak anlamına gelmez. Bu çerez son derece teknik bir kullanıcı tarafından kaydedilebilir ve "kullanım süresi dolduktan" sonra tekrar kullanılabilir.
Oturum verilerini sunucu tarafında saklamak istemiyorsanız, belirteci (çerez veya başka şekilde) saklamanız gerekir. Kendi kendine yeten bir kimlik doğrulama simgesi bazen Macaroon olarak adlandırılır . Bunun istemci ve sunucu arasında nasıl iletileceği (ister çerez, ister ekstra başlıklar isterse istek varlığının kendisi) kimlik doğrulama mekanizmasının kendisinden tamamen bağımsızdır.
HttpClient
. NET'te çerezleri sorunsuz bir şekilde kullanabilirsiniz ve bunun hakkında düşünmeniz gerekmez. Karşılaştırıldığında belirteçleri uygulamak zordur, çünkü belirteci bir yere koymadan kolayca geçersiz kılamazsınız.
curl
ya wget
, kurabiye yönetmek oldukça lanetlemek sakıncalı olduğunu ve gerçekten bir demet onlar hakkında düşünmek zorunda. Cevabımı düzenleyerek diğer noktanıza cevap verdim.
Evet ve Hayır - Nasıl kullandığınıza bağlı.
Çerezler, müşteride, müşteride, müşteride ve müşteride müşteri durumunu korumak için kullanılırsa, o zaman huzursuz olurlar.
Eğer sunucu durumunu cookie'ye kaydediyorsanız, temel olarak sadece istemciye yükü değiştiriyorsunuz - ki bu rahat değil.
Peki bazı örnekler nelerdir?
Dinlendirici:
Huzurlu Değil:
Huzursuzluk, sunucunun vatansızlığından gelir. İstemciler uygulama durumunu koruyabilir ve sunucuya nereye gideceğini kararlaştırmak için nerede olduklarını söylemek için sunucuya gönderebilir. Temelde oturumlar / durumlar geçmişe dayalı verilere ihtiyaç duyar ve konuşmak için geçmiş isteklere dayanır, dinlendirici uygulamalar ideal değildir.
Biri çerezleri kullanabilir. REST onlara izin verir.
REST, herhangi bir oturum bilgisinin istemci tarafında saklanmasını gerektirir, ancak kimlik doğrulama söz konusu olduğunda, bazı nedenlerin güvenlik nedeniyle sunucu tarafında kalması gerekir.
Blog yayınlarımdan birinden, kimlik doğrulama verilerinin REST ile ilgili olarak kabul edilmediğine dair genel bir anlaşma var. Bu nedenle, sunucular için bu oturum verilerinin bazılarını yanlarında tutmaları uygundur.