2012-02-28 17 views
6

एएसपी.नेट वेब एपीआई के बारे में डिजाइन और सीखने में मुझे कुछ चुनौतियों का सामना करना पड़ा है, मुझे कुछ मदद और चर्चा चाहिए।एएसपी.नेट वेब एपीआई - क्वेरीस्ट्रिंग मानों और एपीआई सुरक्षा से प्राधिकृत

ओएथ के बिना एक सुरक्षित आरईएसटी एपीआई डिजाइन करने पर इस excellent post से प्रेरित होकर मैं सोच रहा हूं कि विभिन्न टोकन और जानकारी को सत्यापित करने के लिए सबसे अच्छा तरीका कैसे है, जिसके लिए मैं पूछना चाहता हूं।

संक्षिप्त सारांश मैं के लिए पूछ रहे होंगे (क्वेरी स्ट्रिंग में) निम्नलिखित जानकारी .. है

  • प्रयोक्ता आईडी एक गुप्त के आधार पर
  • api कुंजी
  • टाइमस्टैम्प
  • एक हस्ताक्षर हैश कुंजी उपयोगकर्ता को जारी किया गया है और अनुरोध मानों के साथ एक साथ धोया गया है

मेरा प्रश्न/सोच यह है:

यदि यह एक ध्वनि दृष्टिकोण है, तो एएसपी.नेट वेब एपीआई का उपयोग करके इसे लागू करने का सबसे अच्छा तरीका क्या होगा?

मैं वर्तमान में या तो एक कस्टम विशेषता का उपयोग करने के बारे में सोच रहा हूं जिसके साथ मैं अपनी विधियों को चिह्नित कर सकता हूं, एक प्रकार की प्राधिकरण विशेषता जो क्वेरी स्ट्रिंग या कुछ पॉको प्रकार ऑब्जेक्ट से आवश्यक है जिसमें सभी मान शामिल हैं और मैं इसका उपयोग कर सकता हूं एक ही स्थान पर सभी प्राधिकरण प्रकार कोड रखने के लिए।

क्या किसी को इस पर कोई अनुभव या विचार है?

धन्यवाद :)

+0

आप संभवत: वैश्विक Begin_Request हैंडलर या वैश्विक प्रमाणीकरण_रूक्वेस्ट हैंडलर में अपना ऑथ कोड डाल सकते हैं। –

उत्तर

5

वर्तमान में, जैसा कि आप देखा हो सकता है, AuthorizeAttribute दृष्टिकोण वेब एपीआई में प्रयोग किया जाता है। मुझे लगता है कि यह एक काफी अच्छा दृष्टिकोण है कि हम इस विशेषता को अलग-अलग वस्तुओं पर डाल सकते हैं जिन्हें प्राधिकरण की आवश्यकता है।

मैंने System.Web.Http.Filters.AuthorizationFilterAttribute को विस्तारित करके प्राधिकरण किया है। इसे विस्तारित करने के बाद, सभी प्राधिकरण विवरण आपके ऊपर हैं और आपके पास से चुनने के लिए बहुत सारे दृष्टिकोण हैं।

+0

क्या आपके पास कोई उदाहरण है? – daanl

+0

निश्चित रूप से। मेरा BasicAuthorizationFilterAttribute System.Web.Http.Filters.AuthorizationFilterAttribute का विस्तार करता है और फिर ऑन-प्राधिकरण विधि को ओवरराइड करता है। चूंकि ऑन-प्राधिकरण विधि HttpActionContext को इसके पैरामीटर के रूप में स्वीकार करती है। यह ऑब्जेक्ट मुझे अनुरोध संदेश तक पहुंचने और वहां से आवश्यक डेटा ले जाने की अनुमति देता है (इस मामले में HttpRequestHeaders.Authorization शीर्षलेख)। वहां से, मूल्य की जांच की जानी चाहिए। यदि यह मान्य है, तो विधि वापस आती है। अन्यथा विधि actionContext.Response ऑब्जेक्ट को निर्दिष्ट करती है और "असफल प्राधिकरण" प्रतिक्रिया लौटा दी जाती है। –

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