Diğer cevapların eksik olduğu bir husus, RFC 2616 bağlamında Kimlik Doğrulama ve Yetkilendirmenin SADECE RFC 2617'nin HTTP Kimlik Doğrulama protokolüne atıfta bulunması gerektiğidir. RFC2617 dışındaki şemalarla kimlik doğrulaması, HTTP durum kodlarında desteklenmez ve dikkate alınmaz. 401 veya 403 kullanılıp kullanılmayacağına karar verirken.
Kısa ve Terse
İzinsiz, istemcinin RFC2617'nin kimliğinin doğrulanmadığını ve sunucunun kimlik doğrulama işlemini başlattığını gösterir. Yasak, istemcinin RFC2617'nin kimliğinin doğrulanmış olduğunu ve yetkisi olmadığını veya sunucunun istenen kaynak için RFC2617'yi desteklemediğini gösterir.
Yani, kendi roll-your kendi giriş işleminiz varsa ve asla HTTP Authentication kullanmıyorsanız, 403 her zaman doğru cevaptır ve 401 asla kullanılmamalıdır.
Detaylı ve Derinlemesine
RFC2616'dan
10.4.2 401 Yetkisiz
İstek, kullanıcı kimlik doğrulaması gerektiriyor. Yanıt, istenen kaynağa uygulanabilir bir meydan okuma içeren bir WWW-Kimlik doğrulama başlık alanı içermelidir (bölüm 14.47). Müşteri, isteği uygun bir Yetkilendirme başlık alanıyla tekrarlayabilir (bölüm 14.8).
ve
10.4.4 403 Yasak Sunucu isteği anladı ancak bunu yapmayı reddediyor. Yetkilendirme yardımcı olmaz ve istek tekrar edilmemelidir.
Akılda tutulması gereken ilk şey, bu belge bağlamında "Kimlik Doğrulama" ve "Yetkilendirme" nin özellikle RFC 2617'den gelen HTTP Kimlik Doğrulama protokollerine atıfta bulunmasıdır. Kendi oluşturduğunuz kimlik doğrulama protokollerine atıfta bulunmazlar. giriş sayfalarını vb. kullanarak "giriş" kullanacağım. RFC2617 dışındaki yöntemlerle kimlik doğrulama ve yetkilendirme için kullanacağım.
Dolayısıyla asıl fark, sorunun ne olduğu ya da bir çözüm olsa bile değildir. Aradaki fark, sunucunun müşteriden daha sonra yapmasını beklediği şeydir.
401, kaynağın sağlanamadığını, ancak sunucunun istemcinin HTTP Kimlik Doğrulama yoluyla oturum açtığını ve işlemi başlatmak için yanıt başlıkları gönderdiğini İSTEDİR. Muhtemelen yok, kaynağa erişime izin verecek yetkiler var, muhtemelen yok, ama bir deneyelim ve ne olacağını görelim.
403 kaynağın sağlanamadığını ve mevcut kullanıcı için bunu RFC2617 ile çözmenin bir yolu olmadığını ve denemenin bir anlamı olmadığını belirtir. Bunun nedeni, hiçbir kimlik doğrulama seviyesinin yeterli olmadığı (örneğin bir IP kara listesi nedeniyle) olduğu, ancak kullanıcının zaten doğrulanmış olduğu ve yetkisinin olmadığı olabilir. RFC2617 modeli bir kullanıcı, bir kimlik bilgisi olduğundan, kullanıcının yetkilendirilebilecek ikinci bir kimlik bilgileri kümesine sahip olabileceği durumlar göz ardı edilebilir. RFC2616 standartlarının ve tanımının dışında bir tür giriş sayfası veya diğer RFC2617 kimlik doğrulama protokolünün yardımcı olabileceği veya yardım edemeyeceği anlamına gelmez.
Düzenleme: RFC2616 eskidir, bkz. RFC7231 ve RFC7235 .