2016-12-16 13 views
13

में टोकन पास किए बिना सिग्नलआर (.NET कोर) में जेडब्ल्यूटी प्रमाणीकरण मैं एएसपी .NET कोर वेब एपीआई एप्लिकेशन में जेडब्ल्यूटी प्रमाणीकरण टोकन का उपयोग कर रहा हूं। टोकन एपीआई द्वारा उत्पन्न होते हैं, न कि किसी तीसरे पक्ष द्वारा। मैंने स्टैक पर सफलतापूर्वक सिग्नल जोड़ा, लेकिन अब मुझे उन उपयोगकर्ताओं को प्रमाणित करने की आवश्यकता है जो सर्वर (हब) विधियों को निष्पादित करने का प्रयास कर रहे हैं। किसी ने जावास्क्रिप्ट में "qs" संपत्ति में टोकन पास करने का सुझाव दिया है। यह मेरे लिए काम नहीं करेगा क्योंकि हमारे टोकन वास्तव में बड़े हैं (उनमें बहुत से दावों हैं)। मैंने पेलोड से टोकन पढ़ने और उपयोगकर्ता को स्वतः प्रमाणीकृत करने के लिए एक कस्टम मिडलवेयर लिखने का प्रयास किया। समस्या यह है कि, वेबसाकेट्स का उपयोग करते समय, मिडलवेयर निष्पादित नहीं होता है। कोई भी विचार मदद करेगा।क्वेरी स्ट्रिंग

+0

[सिग्नलआर और ओपनआईडी कनेक्ट] का संभावित डुप्लिकेट (http://stackoverflow.com/questions/40806171/signalr-and-openid-connect) –

+2

यह डुप्लिकेट नहीं है, क्योंकि मैं क्वेरी स्ट्रिंग का उपयोग नहीं कर सकता सब, मेरे टोकन बहुत लंबे हैं और मुझे 414 त्रुटि मिलती है। मैं एक कस्टम मिडलवेयर की तरह कुछ बनाना चाहता हूं जो सिग्नलआर संदेश से टोकन निकालता है और फिर उपयोगकर्ता को लॉग इन करता है। –

+0

दुर्भाग्यवश टोकन को पार करने के केवल दो तरीके हैं --- या तो क्वेरी स्ट्रिंग या पैरामीटर के रूप में। उम्मीद है कि यह सिग्नलआर के अगले संस्करण में संबोधित किया जाएगा। – mikebridge

उत्तर

5

आलेख पर एक नज़र डालें जो क्वेरी स्ट्रिंग Authenticate against a ASP.NET Core 1.0 (vNext) SignalR application using JWT का उपयोग करने का सुझाव देती है। मुझे पता है कि टोकन बहुत लंबा है, लेकिन लेखक बताता है कि अनुरोध को प्रमाणित करने के लिए मिडलवेयर का उपयोग कैसे करें।

  • SignalR किसी विशेष प्रमाणीकरण तंत्र में बनाया नहीं है, यह मानक ASP.NET प्रमाणीकरण का उपयोग किया जाता है:

    यहाँ लेख से सार है।

  • जेडब्ल्यूटी आम तौर पर एक अनुरोध के प्राधिकरण शीर्षक में भेज दिया जाता है
  • SignalR जावास्क्रिप्ट क्लाइंट लाइब्रेरी साधन अनुरोधों में हेडर भेजने के लिए शामिल नहीं है, यह हालांकि आप एक क्वेरी स्ट्रिंग
  • अगर हम पारित पारित करने के लिए अनुमति नहीं है क्वेरी स्ट्रिंग में टोकन हम एक मिडलवेयर लिख सकते हैं जो टोकन के साथ प्राधिकरण शीर्षलेख जोड़ता है। इस पाइप लाइन में जेडब्ल्यूटी मिडलवेयर पहले किया जाना चाहिए
  • "वाहक" प्रारूप

मैं प्रमुख मुद्दा है कि अपने कस्टम मिडलवेयर जेडब्ल्यूटी मिडलवेयर से पहले पंजीकृत किया जाना चाहिए पर प्रकाश डाला है के प्रति सचेत रहें।

+0

मिडलवेयर वहां है, केवल क्यूएस बहुत लंबा है –

+0

मैं समझता हूं कि आप क्यू लंबे हैं। क्या आप टोकन में टोकन एम्बेड कर सकते हैं और इसे पहले से पंजीकृत करने के लिए मिडलवेयर का उपयोग कर सकते हैं? –

+0

ठीक है, मुझे लगता है कि आपको सिग्नलआर से पहले मिडलवेयर में पेलोड तक पहुंच नहीं हो सकती है। उस स्थिति में जब आप पेलोड पढ़ते हैं तो आप अपने एप्लिकेशन कोड में टोकन के लिए कस्टम पार्सर को कार्यान्वित कर सकते हैं। आप प्राधिकृत विशेषता का उपयोग करने में सक्षम नहीं होंगे, लेकिन आप उपयोगकर्ता के दावों और यह सब जांचने में सक्षम होंगे। –

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