c# - Validate ASP NET API Token? -


पृष्ठभूमि

विजुअल स्टूडियो 2013, एएसपी नेट वेब एपीआई 2

समस्या

मैं "मानक" .NET के सदस्यता प्रदाता का उपयोग कर रहा हूं, लेकिन मुझे कस्टम लॉगिन पद्धति की आवश्यकता है। इसलिए मैंने एक नया तरीका जोड़ा और फिर टोकन जेनरेट करने के लिए मेरे लिए यह प्रयोग किया:

  // OWIN flow var identity = new ClaimsIdentity (Startup.OAuthOptions.AuthenticationType) का उपयोग करके उपयोगकर्ता को साइन-इन करें ); Identity.AddClaim (नया दावा (दावे टाइप .नाम, यूज़र। यूज़र नेम)); // यह बहुत महत्वपूर्ण है क्योंकि यह मौजूदा यूजर आईडी // को पॉप्युलेट करने के लिए इस्तेमाल किया जाएगा जो कि यूजर। आईडेंटिटी.नेटयूआईएसआईडी () विधि से एपीआई कंट्रोलर पहचान के अंदर प्राप्त की जाती है। एडक्लाइम (नया दावे (दावे टाइप करें .नामआईडेंटिफायर, यूजर.आईडी , रिक्त, "LOCAL_AUTHORITY")); प्रमाणीकरण टिकट टिकट = नया प्रमाणनटिकेट (पहचान, नई प्रमाणीकरणप्रापतियां) ()); Var currentUtc = नया Microsoft.Owin.Instructure.SystemClock ()। UtcNow; Ticket.Properties.IssuedUtc = currentUtc; Ticket.Properties.ExpiresUtc = currentUtc.Add (नई टाइमस्पेन (14, 0, 0, 0)); Accesstoken = startup.OAuthOptions.AccessTokenFormat.Protect (टिकट); अनुरोध। हेडर। प्राधिकरण = नया सिस्टम। नेट। एचटीटीपी। हेडर। ऑथेंटिकेशन हेडर वैल्यू ("बीयरर", एक्सेस्टोन); Authentication.SignIn (पहचान);  

लेकिन जब मैं कुछ "ऑथराइज़" सेवाओं का उपभोग करने के लिए अपने क्लाइंट में दिए गए इस टोकन का उपयोग करने का प्रयास करता हूं मुझे एक अपरिवर्तनीय अपवाद मिल रहा है मैं कैसे मान्य कर सकता हूं कि यहां दिया गया टोकन मान्य है।

और अधिक यदि यह नहीं है, तो मैं एक मान्य कैसे बना सकता हूं?

मुझे लगता है कि यदि आप कस्टम सुरक्षा प्रवाह का उपयोग करने का इरादा रखते हैं तो आप अधिकृत करें उपयोग कर सकते हैं। जैसे:

  सार्वजनिक वर्ग ApiAuthentication: IsAuthorized (HttpActionContext संदर्भ) {यहाँ उदाहरण के लिए // आपकी प्रमाणीकरण तर्क bool AuthorizeAttribute {संरक्षित ओवरराइड: //context.Request.Headers.TryGetValues("Authorization ", बाहर बफ़र्स); }} संरक्षित ओवरराइड शून्य HandleUnauthorizedRequest (HttpActionContext actionContext) {// इस विधि अनधिकृत अनुरोध से निपटने}  

तो आप अपने नियंत्रक की विधि को सजाने कर सकते हैं

  [के लिए है ApiAuthentication] [क्वेरी योग्य] सार्वजनिक IEnumerable & lt; ProductIndex & gt; GetProductIndex () {// वापसी डाटा}  

* चियर्स


Comments

Popular posts from this blog

import - Python ImportError: No module named wmi -

Editing Python Class in Shell and SQLAlchemy -

c# - MySQL Parameterized Select Query joining tables issue -