6

तक पहुंचने का प्रयास करते समय जारीकर्ता को सत्यापित करने में असमर्थ है, इसलिए यहां मेरी समस्या का त्वरित विवरण दिया गया है - मेरा वर्तमान सेटअप और एएसपी.नेट कोर पहचान के साथ पहचान सर्वर 4 कार्यान्वयन, इसके द्वारा संरक्षित एक एपीआई संसाधन और एक एक्समरिन है। एंड्रॉइड एप्लिकेशन जो कि है ग्राहक। मेरा वर्तमान मुद्दा यह है कि निम्न त्रुटि (एपीआई लॉग से) के कारण क्लाइंट (एंड्रॉइड) को एपीआई से कुछ भी नहीं मिल सकता है:एपीआई

"बेयरर" प्रमाणित नहीं किया गया था। विफलता संदेश: "आईडीएक्स 10205: जारीकर्ता सत्यापन विफल रहा। जारीकर्ता: 'http://10.0.2.2:5000'। मेल नहीं मिला: सत्यापन पैरामीटर। वैलिडइस्सर: 'शून्य' या सत्यापन पैरामीटर। वैलिडइस्कर्स: 'http://127.0.0.1:5000'।"

मूल रूप से, क्योंकि मैं एंड्रॉइड एमुलेटर का उपयोग कर रहा हूं, मेरी मशीन पर स्थानीयहोस्ट पर कुछ कॉल करने के लिए, मुझे इसके लिए 10.0.2.2 यूआरएल का उपयोग करने की आवश्यकता है। फिर समस्या आती है - पहचान सर्वर प्रमाणीकरण के साथ ठीक है, मैं ठीक से लॉगिन कर सकता हूं, मुझे एक्सेस टोकन मिल गया है, लेकिन इसके बाद मुझे एपीआई को कॉल करने की आवश्यकता है। और यही वह जगह है जहां त्रुटि होती है - यह एक जारीकर्ता (127.0.0.1:52000) के साथ जारीकर्ता की अपेक्षा कर रहा है लेकिन 10.0.2.2:52000 प्राप्त करता है, जो एंड्रॉइड क्लाइंट का अधिकार है।

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

किसी भी मदद की सराहना की जाएगी।

+0

हाय! क्या आपको इसके लिए कोई समाधान मिला? – JayDeeEss

+0

नहीं, वास्तव में इसमें देखने का समय नहीं था - अब तक मेरे विचार मुख्य रूप से ऐप को स्थानीय आईआईएस में तैनात करने की कोशिश कर रहे हैं और इसे फ़ायरवॉल में खोलें, या पता लगाएं कि क्या मैं ऐप को बता सकता हूं बंदरगाह 5000 में आने वाली किसी भी चीज पर भरोसा करें। शायद मैं कुछ दिनों के दौरान इसे ठीक करने की कोशिश कर रहा हूं क्योंकि यह एक निजी परियोजना के लिए है, काम से संबंधित नहीं। –

+0

ठीक है, उत्तर के लिए धन्यवाद। हाँ मुझे लगता है कि स्थानीय देव सर्वर पर ऐप को तैनात करना और उन यूआरएल तक पहुंचने का सबसे आसान तरीका है। यही वह है जो मैं अभी कर रहा हूं और यह सही काम कर रहा है! – JayDeeEss

उत्तर

0

तो, मैं बस इसके वेब भाग को चलाकर इस मुद्दे के आसपास काम करने में कामयाब रहा ताकि यह मेरे स्थानीय नेटवर्क पर दिखाई दे। मैंने अधिक विस्तार से क्या किया - प्रोग्राम.cs में जहां मैं होस्ट बनाता हूं, मैं .UseUrls("http://*:5001") विधि का उपयोग करता हूं, और फिर मैं dotnet run के साथ ऐप चलाता हूं।

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

4

पहले: standard को देखते हुए, आप केवल एक जारीकर्ता का प्रबंधन करते हैं।

क्या आप अपनी पहचान/टोकन पीढ़ी का प्रबंधन कर रहे हैं? ऐसा लगता है जैसे यह मामला नहीं है।

आप अपने टोकन को स्पष्ट रूप से बनाने के लिए अपने एपीआई को कस्टमाइज़ कर सकते हैं। फिर, आप एक वैश्विक जारीकर्ता (जैसे आपकी परियोजना यूआरएल) को इंगित कर सकते हैं ताकि कोई भी इसके खिलाफ मान्य हो सके।

var token = new JwtSecurityToken(
       issuer: "http://my-perfect-proj.net", 
       claims: ..., 
       notBefore: DateTime.Now, 
       expires: DateTime.Now.AddHours(1), 
       signingCredentials: ...) 
      ); 

के बाद अपने टोकन बनाया है और भेज दिया जाता है, अपने स्वाद (समय, उपयोगकर्ता के डाटा की जाँच, जारीकर्ता) के आधार पर अपनी आने वाली अनुरोध को मान्य।

ASP.NET Core JWT Bearer Token Custom Validation

Creating RESTful API with Authentication

संपादित करें: एक ही मशीन पर Xamarin और विजुअल स्टूडियो का उपयोग करना, मुझे समस्याओं के इस प्रकार दिया नहीं था लेकिन इस मामले में, मैं दृश्य स्टूडियो एम्युलेटर का उपयोग करके किया गया था। आप इसे आज़मा सकते हैं और अन्य प्रकार के कामकाज करने से बच सकते हैं।

+0

एक समाधान हो सकता है, लेकिन मुझे स्थानीय स्तर पर इसे चलाने में सक्षम होने के लिए यह सब कुछ नहीं करना पड़ेगा - मैं कोडबेस को बदलना नहीं चाहता बल्कि मेरे आंतरिक पर एपीआई का पर्दाफाश करने का एक तरीका ढूंढूंगा नेटवर्क। और हाँ, वीएस एम्यूलेटर अब Google एम्यूलेटर की तुलना में अलग-अलग काम करता है, लेकिन अब मेरी कुछ ज़रूरतों के लिए दर्द है इसलिए मैंने इसका उपयोग बंद कर दिया। इनपुट के लिए धन्यवाद हालांकि - कोई और इससे लाभ प्राप्त कर सकता है। –