मैं दो स्वतंत्र सेवाओं, व्यावसायिक सामग्री के लिए एक और स्प्रिंग OAuth 2स्प्रिंग OAuth: प्राधिकरण सर्वर बैकएंड
का उपयोग कर के उन्हें व्यापार-सेवा और OAuth सेवा कहते हैं उपयोगकर्ता प्रमाणीकरण के लिए एक विकसित करना चाहते हैं के साथ संसाधन सर्वर।
अब यदि अनुरोध प्रमाणित नहीं है तो मैं व्यापार सेवा प्रतिनिधि को ओथ-सेवा में भेजना चाहता हूं। क्लाइंट एप्लिकेशन (एक एंड्रॉइड ऐप) को ओथ-सर्विस के बारे में पहले से नहीं जानना चाहिए, इसे केवल गैर-प्रमाणीकृत अनुरोध के लिए 302 HTTP रीडायरेक्ट के साथ बिजनेस-सर्विस द्वारा ही सौंप दिया जाना चाहिए। सटीक होने के लिए, मैं चाहता हूं कि मेरा एपीआई लैंडिंग पृष्ठ http://businessservice.com/login पर एक लिंक प्रदान करे और जब मेरा क्लाइंट ऐप इस लिंक का पालन करने का निर्णय लेता है, तो यह ओथ-सेवा पर रीडायरेक्ट हो जाता है।
यदि मैं @EnableOAuth2Resource के साथ बिजनेस-सर्विस को एनोटेट करता हूं, तो इसके सभी संसाधन 401 लौटने पर सुरक्षित होते हैं जब मैं उन्हें एक्सेस टोकन के बिना घुमाता हूं। अब तक सब ठीक है। अगर मैं इस तरह की टोकन एक्सेस प्रदान करता हूं:
curl -v http://localhost:8667/resource/ -H "Authorization: Bearer $TOKEN"
मैं संसाधन तक पहुंच सकता हूं। फिर भी अच्छा।
हालांकि अगर मैं ओएथ सेवा के पुनर्निर्देशन को सक्षम करने के लिए @EnableOAuth2Sso के साथ बिजनेस-सर्विस को एनोटेट करता हूं, तो यह एक्सेस टोकन (उपरोक्त के समान कर्ल) के साथ संसाधनों तक पहुंचने की क्षमता खो देता है, यह केवल लॉगिन के लिए 302 देता है पेज http://localhost:8667/login
अगर मैं दोनों एनोटेशन का उपयोग, @ EnableOAuth2Resource हमेशा "जीत" के लिए, प्रमाणीकरण काम करता है के रूप में लगता है, लेकिन बुला http://localhost:8667/login रिटर्न एक 404.
तो सही तरीके से एक संसाधन सर्वर है कि प्रतिनिधियों को बनाने के लिए क्या है गैर-प्रमाणित कॉल के लिए ऑथ सर्वर पर?
पर रीडायरेक्ट किया जा सकता है, क्या आप उपयोगकर्ता के बाद संसाधन सर्वर में उपयोगकर्ता जानकारी कैसे प्राप्त कर सकते हैं oauth2 द्वारा प्रमाणित है? – Kane
@ केन, यह बहुत देर हो चुकी है, लेकिन दूसरों की मदद कर सकती है। आप एंडपॉइंट्स में निम्नलिखित पैरामीटर का उपयोग कर सकते हैं: @RequestHeader (value = "प्रमाणीकरण") स्ट्रिंग प्रमाणीकरण हैडर, प्रिंसिपल वर्तमान उपयोगकर्ता – Sourabh