トークンの有効期限が切れました-JSONRESTAPI-エラーコード


83

JSON RESTAPIがあります。15分間有効なトークンを与えるハンドシェイクがあります。15分以内に行うすべての通話は問題なく機能するはずです。15分後、エラーオブジェクト(コード、メッセージ、成功= falseを含む)を返していますが、どのHTTPエラーコードを返す必要があるのか​​疑問に思っていました。また、HTTPエラーコードを使用すると、特定のクライアントが混乱しますか?(HTML5、iPhone、Android)。このシナリオでベストプラクティスと見なされるものは何ですか?


9
+1、すばらしい質問です。これに対する良い解決策を見つけたことがありますか?(ところで-両方のNetflixLinkedInのリターン401)。
ラッセクリスチャンセン


@MichaelFreidgeimこの質問はすでに古いです
FindOutIslamNow

@FindOutIslamNow、「重複の可能性」はクリーンアップする方法です-同様の質問を閉じて、最良の回答を保持します。日付は必須ではありません。meta.stackexchange.com/questions/147643/を参照してください説明が必要であることに同意する場合は、meta.stackexchange.com / questions / 281980
MichaelFreidgeim19年

回答:


88

401 Unauthorizedステータスコードを返す必要があります。さらに、トークンを再度確立するためのハイパーメディアを提供する場合があります

Webアプリで何が起こるかを考えてください。あなたは銀行のサイトを言いに行きます。認証されていない場合は、ログインページに移動します。それからあなたはログインし、あなたはしばらくの間行ってもいいです。その後、有効期限が切れ、サイクルが繰り返されます。

ちょっとした考え。


39

仕様rfc6750によると-「OAuth2.0認証フレームワーク:ベアラートークンの使用法」、https://tools.ietf.org/html/rfc6750、p.8 、セクション3.1、リソースサーバーは401を返す必要があります:>

invalid_token提供されたアクセストークンは、有効期限が切れている、取り消されている、形式が正しくない、またはその他の理由で無効です。リソースは、HTTP 401(Unauthorized)ステータスコードで応答する必要があります。クライアントは、新しいアクセストークンを要求し、保護されたリソース要求を再試行できます(MAY)。


2
注意SHOULDをMUST。発信者として、401に頼ることができればいいのですが。まあ。
dbreaux

13

FWIW Facebookは、カスタムJSON応答で400を使用します。私は個人的にカスタムJSON応答で401を好みます。

FBの応答本文は次のとおりです。

{
  "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
  }
}

28
Facebookは開発のガイドラインではなく、例外として扱われるべきだと何かが教えてくれます。ただ言って。
ビクターイベンス2016

6
承認サーバーに関するFacebookへの呼び出しですか、それともリソースプロバイダーへの呼び出しですか?承認サーバーは400を返す必要があります:tools.ietf.org/html/rfc6749#section-5.2、ただしリソースプロバイダーは401を返す必要があります
Michael Freidgeim 2017年
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.