2012-01-13 17 views
32

मुझे एक JSON REST API मिला है। एक हैंडशेक है जो आपको एक टोकन देगा जो 15 मिनट के लिए मान्य है। उन 15 मिनटों में आपके द्वारा किए जाने वाले सभी कॉल ठीक काम करना चाहिए। 15 मिनट के बाद मैं एक त्रुटि ऑब्जेक्ट लौटा रहा हूं (कोड, संदेश, सफलता = झूठा शामिल है) लेकिन मैं यह भी सोच रहा था कि HTTP त्रुटि कोड मुझे वापस क्या करना चाहिए? और एक HTTP त्रुटि कोड का उपयोग कुछ निश्चित ग्राहकों को गड़बड़ कर देगा? (एचटीएमएल 5, आईफोन, एंड्रॉइड)। इस परिदृश्य में सबसे अच्छा अभ्यास क्या माना जाता है?टोकन समाप्त हो गया - JSON REST API - त्रुटि कोड

+4

+1, अच्छा सवाल। क्या आपको कभी इसका अच्छा समाधान मिला? (बीटीडब्ल्यू - दोनों [netflix] (http://developer.netflix.com/docs/read/HTTP_Status_Codes) और [जुड़े हुए] (https://developer.linkedin.com/documents/handling-errors-invalid-tokens) रिटर्न एक 401)। –

+0

संभावित डुप्लिकेट [सत्र टोकन अमान्य होने पर मुझे किस स्थिति कोड का उपयोग करना चाहिए?] (Https://stackoverflow.com/questions/20613088/what-status-code-should-i-use-when-session-token-is -इनवालिद) –

उत्तर

3

मैंने ओएथ 2 spec की खोज की और मुझे पता चला कि वे समाप्त होने पर "अमान्य टोकन त्रुटि" वापस कर सकते हैं। इसमें कोई उल्लेख नहीं है, कि मैं पा सकता हूं कि वे किस HTTP कोड का उपयोग करते हैं। हालांकि, मैं कहूंगा कि आपकी सबसे सुरक्षित शर्त केवल 400 का उपयोग करने के लिए है।

37

आपको 401 Unauthorized स्थिति कोड वापस करना चाहिए। आप टोकन को फिर से स्थापित करने के लिए हाइपर्मियाडिया प्रदान कर सकते हैं

वेब ऐप में क्या होता है इसके बारे में सोचें। आप एक बैंकिंग साइट कहने के लिए जाते हैं। अगर नहीं लिखा है तो यह आपको लॉग इन पेज पर भेज देगा। फिर आप लॉग इन करते हैं और आप एक समय के लिए जाने के लिए अच्छे हैं। फिर यह समाप्त हो जाता है और चक्र दोहराता है।

बस एक विचार।

5

FWIW फेसबुक कस्टम JSON प्रतिक्रिया के साथ 400 का उपयोग करता है। मैं कस्टम JSON प्रतिक्रिया के साथ व्यक्तिगत रूप से 401 पसंद करेंगे।

यहाँ अमेरिकन प्लान के प्रतिसाद का मुख्य भाग:

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

कुछ मुझे बताता है कि फेसबुक को अपवाद के रूप में माना जाना चाहिए, विकास के लिए दिशानिर्देश नहीं। बस केह रहा हू। –

+0

क्या यह एक प्राधिकरण सर्वर के रूप में या संसाधन प्रदाता के लिए फेसबुक पर कॉल है? प्राधिकरण सर्वर 400 वापस आना चाहिए: https://tools.ietf.org/html/rfc6749#section-5.2, लेकिन संसाधन प्रदाता को 401 वापस करना चाहिए –

7

कल्पना rfc6750 के अनुसार - "OAuth 2.0 प्राधिकरण फ्रेमवर्क: बियरर टोकन उपयोग", https://tools.ietf.org/html/rfc6750, p.8, खंड 3.1, संसाधन सर्वर 401 लौटना चाहिए: >

invalid_token पहुँच प्रदान किया गया टोकन, समाप्त हो गई है रद्द कर दिया, विकृत होने या अन्य कारणों से अमान्य। संसाधन को HTTP 401 (अनधिकृत) स्थिति कोड के साथ जवाब देना चाहिए। क्लाइंट मई एक नया एक्सेस टोकन का अनुरोध करता है और संरक्षित संसाधन अनुरोध का पुनः प्रयास करता है।

संबंधित मुद्दे