Belirtecin Süresi Doldu - JSON REST API - Hata Kodu


84

JSON REST API'm var. Size 15 dakika geçerli bir jeton verecek bir el sıkışma var. Bu 15 dakika içinde yaptığınız tüm aramalar sorunsuz çalışacaktır. 15 dakika sonra bir hata nesnesi döndürüyorum (kod, mesaj, success = false dahil) ama aynı zamanda hangi HTTP Hata Kodunu döndürmem gerektiğini merak ediyordum? Ve bir HTTP hata kodu kullanmak belirli istemcileri bozar mı? (HTML5, iPhone, Android). Bu senaryoda en iyi uygulama nedir?


9
+1, harika soru. Buna hiç iyi bir çözüm buldunuz mu? (btw - hem netflix ve linkedin döner bir 401).
Lasse Christiansen


@MichaelFreidgeim Bu soru daha eski
FindOutIslamNow

@FindOutIslamNow, "Possible duplicate", benzer soruları kapatmanın ve birini en iyi yanıtlarla saklamanın bir yoludur. Tarih önemli değildir. Bkz meta.stackexchange.com/questions/147643/... bunu üzerine açıklama lütfen oyu gerektirdiğini kabul ediyorsanız meta.stackexchange.com/questions/281980/...
Michael Freidgeim

Yanıtlar:


89

Bir 401 UnauthorizedDurum Kodu iade etmelisiniz . Ayrıca belirteci yeniden oluşturmak için hiper ortam sağlayabilirsiniz

Bir web uygulamasında neler olduğunu düşünün. Bankacılık sitesi demeye gidiyorsun. Yetkilendirilmezse, sizi oturum açma sayfasına gönderecektir. Sonra oturum açarsın ve bir süreliğine gitmen iyi olur. Sonra süresi dolar ve döngü tekrar eder.

Sadece bir düşünce.


39

rfc6750 spesifikasyonuna göre - "OAuth 2.0 Yetkilendirme Çerçevesi: Taşıyıcı Token Kullanımı", https://tools.ietf.org/html/rfc6750 , s.8, bölüm 3.1, kaynak sunucusu 401 döndürmelidir:>

valid_token Sağlanan erişim jetonunun süresi dolmuş, iptal edilmiş, hatalı biçimlendirilmiş veya başka nedenlerle geçersiz. Kaynak, HTTP 401 (Yetkisiz) durum kodu ile yanıt VERMELİDİR. İstemci yeni bir erişim belirteci talep edebilir ve korumalı kaynak talebini yeniden deneyebilir.


2
Not OLMALI vs ZORUNLU . Bir arayan olarak 401'e güvenmek güzel olurdu. Ah evet.
dbreaux

12

FWIW Facebook, özel bir JSON yanıtıyla 400 kullanır. Ben şahsen özel JSON yanıtı olan 401'i tercih ederim.

FB'nin yanıt gövdesi:

{
  "error": {
    "message": "Error validating access token: Session has expired on Jul 17, 2014 9:00am. The current time is Jul 17, 2014 9:07am.",
    "type": "OAuthException",
    "code": 190,
    "error_subcode": 463
  }
}

29
Bir şey bana Facebook'un geliştirme için bir kılavuz değil, istisna olarak değerlendirilmesi gerektiğini söylüyor. Sadece söylüyorum.
Victor Ivens

6
Bir yetkilendirme sunucusuna veya bir kaynak sağlayıcıya Facebook'a yapılan bir çağrı mı? Yetkilendirme sunucusu 400: tools.ietf.org/html/rfc6749#section-5.2 döndürmelidir , ancak kaynak sağlayıcı 401
Michael Freidgeim
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.