मेरे पास दो संसाधन सर्वर हैं: जिनके पास अधिसूचना ईमेल करने के लिए एक एपीआई है और एक निर्धारित कार्य चलाता है। जब एक निर्धारित कार्य शुरू होता है, तो मैं उपयोगकर्ताओं को सूचित करने के लिए ईमेल सेवा पर कॉल करना चाहता हूं कि उनका कार्य शुरू हो रहा है। दोनों सेवाएं प्रमाणीकरण के लिए OAuth2 का उपयोग करती हैं। मैं निर्धारित समय में OAuth2RestTemplate का उपयोग कैसे कर सकता हूं?
इसे पूरा करने के मैं वसंत बूट का उपयोग कर रहा स्प्रिंग सुरक्षा के साथ: निर्धारित कार्य सेवा ग्राहक साख की स्थापना की है, ताकि वह यह पेश करके पहुंच टोकन प्राप्त कर सकते हैं ग्राहक साख है OAuth2। ईमेल सेवा में कॉल करने के लिए कार्य सेवा में OAuth2RestTemplate है। जब निर्धारित कार्य समाप्त हो जाता है और OAuth2RestTemplate का उपयोग करने का प्रयास करता है, तो यह OAuth2ClientContext को एक सैसन-स्कोप्ड बीन के रूप में प्राप्त करने का प्रयास करता है। जाहिर है, यह एक नहीं ढूंढ रहा है क्योंकि मैं अनुरोध थ्रेड में निष्पादित नहीं कर रहा हूं, मैं पृष्ठभूमि कार्य धागे में काम कर रहा हूं।
org.springframework.beans.factory.BeanCreationException: Error creating bean with name
'scopedTarget.oauth2ClientContext': Scope 'session' is not active for the current thread;
consider defining a scoped proxy for this bean if you intend to refer to it
from a singleton
जब से मैं प्रणाली करने वाली प्रणाली प्रमाणीकरण के लिए स्थिर ग्राहक क्रेडेंशियल्स का उपयोग कर रहा हूँ, मैं अपने आप पहुंच टोकन को संभालने के लिए सत्र-दायरे वाले डेटा का उपयोग करने के लिए एक अच्छा कारण नहीं दिख रहा है: मैं इस अपवाद मिलता है। मैं एक सिंगलटन OAuth2ClientContext बीन होना पसंद करूंगा कि कोई भी धागा OAuth2RestTemplate के माध्यम से अनुरोध करने के लिए उपयोग कर सकता है।
मैं इसे कैसे कॉन्फ़िगर कर सकता हूं?
मुझे कुछ ऐसा करने की ज़रूरत है - एक क्वार्ट्ज शेड्यूलर को नौकरी का आह्वान करने की आवश्यकता है जो ओएथ 2 संरक्षित आरईएसटी सेवा तक पहुंच जाएगा। मैं उपयोगकर्ता नाम/पासवर्ड आधारित OAuth2 प्रवाह का उपयोग नहीं कर सकता लेकिन क्लाइंट आईडी आधारित प्रवाह का उपयोग नहीं कर सकता। क्या आप अपना कोड साझा कर सकते हैं? या मदद करें? – sunitkatkar