keycloak वाहक केवल ग्राहक: वे मौजूद क्यों हैं?


10

मैं bearer-onlyकीलक में ग्राहकों की अवधारणा के चारों ओर अपना सिर लपेटने की कोशिश कर रहा हूं।

मैं सार्वजनिक बनाम गोपनीय और सेवा खातों और grant_type=client_credentialsसामान की अवधारणा को समझता हूं । लेकिन bearer-only, मैं फंस गया हूं।

Googling में केवल चर्चा के अंशों का खुलासा किया गया है:

आप एक bearer-onlyग्राहक के साथ कीलक से टोकन प्राप्त नहीं कर सकते ।

डॉक्स भी स्पष्ट नहीं हैं। वे कहते हैं:

बियरर-ओनली एक्सेस टाइप का अर्थ है कि एप्लिकेशन केवल बियरर टोकन अनुरोधों की अनुमति देता है।

ठीक है, अगर मेरा ऐप केवल वाहक टोकन अनुरोधों की अनुमति देता है, तो मैं क्लाइंट टोकन / क्लाइंट रहस्य का उपयोग करके कीकोलोक से प्राप्त नहीं कर सकता हूं तो मुझे यह टोकन कैसे प्राप्त होगा?

और यदि आप एक टोकन प्राप्त नहीं कर सकते हैं, तो आप क्या कर सकते हैं? ये ग्राहक क्यों मौजूद हैं? क्या कोई इस प्रकार के ग्राहक का उपयोग करने का उदाहरण दे सकता है?

जवाबों:


5

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

इस स्थिति में, ServiceA होगा confidentialऔर ServiceB bearer-onlyक्लाइंट होगा ।


1
तो इसका मतलब यह है कि यदि मेरा ग्राहक केवल वाहक है, तो मेरे पास उपलब्ध एकमात्र विकल्प Keycloak से सत्यापन अनुरोध कर रहा है ताकि यह सुनिश्चित हो सके कि टोकन ServiceAमान्य है। सही? लेकिन अगर यह मामला है, तो Keycloak को क्यों बुलाएं? यदि मेरे क्लाइंट के पास एक सार्वजनिक कीक्लोक कुंजी है, तो वह कभी भी कीलक को कॉल किए बिना इस कुंजी का उपयोग करके इसे सत्यापित कर सकता है।
कुर्तगन

टोकन स्कोप की वजह से। सर्विस ए में सर्विस बी की तुलना में एक अन्य गुंजाइश होनी चाहिए, इसलिए आपको टोकन एक्सचेंज के लिए की-लोड की आवश्यकता है
जूलियन

@JulianEgner यह समझ में आता है, सिवाय इसके कि टोकन एक्सचेंज वर्तमान में टेक प्रीव्यू में है, पूरी तरह से समर्थित नहीं है, और स्पष्ट रूप से एक एनएवी वैरिएबल के साथ चालू होना चाहिए। क्या bearer-onlyवास्तव में यह उपयोग-केस का समर्थन करने के लिए है जो अभी तक तैयार नहीं है?
irbull

@irbull आपको यह जानकारी कहां से मिली कि टोकन एक्सचेंज टेक प्रीव्यू में होगा?
जूलियन एग्नर

@JulianEgner यह उनके डॉक्स के बहुत नीचे सूचीबद्ध था। Keycloak.org/docs/latest/securing_apps/… में सूचीबद्ध यह कहता है कि "टोकन एक्सचेंज टेक्नोलॉजी पूर्वावलोकन है और पूरी तरह से समर्थित नहीं है। यह सुविधा डिफ़ॉल्ट रूप से अक्षम है।"
इरबेल

5

बेयरर-ओनली एक्सेस टाइप अर्थ

बियरर-ओनली एक्सेस टाइप का अर्थ है कि एप्लिकेशन केवल बियरर टोकन अनुरोधों की अनुमति देता है। यदि इसे चालू किया जाता है, तो यह एप्लिकेशन ब्राउज़र लॉगिन में भाग नहीं ले सकता है।

इसलिए यदि आप अपने क्लाइंट का चयन करते हैं bearer-onlyतो उस स्थिति में की-क्लोक एडेप्टर उपयोगकर्ताओं को प्रमाणित करने का प्रयास नहीं करेगा, लेकिन केवल वाहक टोकन को सत्यापित करेगा। यही कारण है कि कीक्लॉक डॉक्यूमेंटेशन में भी उल्लिखित bearer-onlyएप्लिकेशन ब्राउज़र से लॉगिन की अनुमति नहीं देगा।

और यदि आप एक टोकन प्राप्त नहीं कर सकते हैं, तो आप क्या कर सकते हैं? ये ग्राहक क्यों मौजूद हैं?

आपका ग्राहक केवल कीलक सर्वर पर वाहक के रूप में सेट नहीं किया जा सकता है। आप अभी भी एडेप्टर कॉन्फ़िगरेशन पर केवल बियरर का उपयोग कर सकते हैं। कीकोलोक सर्वर से टोकन प्राप्त करने के लिए "केवल सर्वर" (जब सर्वर पर अपने क्लाइंट की स्थापना) ग्राहकों को अनुमति नहीं देता है। सर्वर पर अपने क्लाइंट को "गोपनीय" में बदलने का प्रयास करें और केवल अपने एडॉप्टर कॉन्फ़िगरेशन (कीक्लॉक.जॉन) पर बियरर सेट करें।

इसलिए यदि आप उपर्युक्त कथन को समझते हैं तो यदि आपके पास दो माइक्रोसेवा हैं जो एक दूसरे से बात कर रहे हैं, तो कॉल करने वाला confidentialऔर शांत होगाbearer-only

और कीक्लोक ने भी उल्लेख किया है

बेयरर केवल क्लाइंट वेब सेवा है जो कभी भी लॉगिन शुरू नहीं करती है। इसका उपयोग आमतौर पर बैक-एंड को सुरक्षित करने के लिए किया जाता है।

इसलिए यदि आप किसी भी एडेप्टर का उपयोग करना चाहते हैं तो आप bearer-onlyजरूरत पर निर्भर हो सकते हैं


1
आपके स्पष्टीकरण के लिए धन्यवाद सुबोध! तो इसका मतलब यह है कि यदि मेरा ग्राहक केवल वाहक है, तो मेरे पास उपलब्ध एकमात्र विकल्प Keycloak को सत्यापन अनुरोध करने के लिए सुनिश्चित कर रहा है कि टोकन मान्य है। सही? लेकिन अगर यह मामला है, तो Keycloak को क्यों बुलाएं? यदि मेरे क्लाइंट के पास एक सार्वजनिक कीक्लोक कुंजी है, तो वह कभी भी कीलक को कॉल किए बिना इस कुंजी का उपयोग करके इसे सत्यापित कर सकता है।
कुर्तगन

@kurtgn अगर आप किसी भी एडेप्टर का उपयोग कर रहे हैं तो केवल मैं bearer-onlyआपके ग्राहक को अन्यथा उपयोग करने का सुझाव दूंगाconfidential
सुबोध जोशी

नहीं, मैं एडाप्टरों का उपयोग नहीं कर रहा हूँ, मैं पायथॉन में कोडिंग कर रहा हूँ, इसके बाद कीक्लॉक के लिए कोई पायथन-विशिष्ट एडेप्टर नहीं है, इसलिए मुझे जेनेरिक
OIDC के

कीकोलोक + पायथन एकीकरण के साथ आप किस पुस्तकालय का उपयोग कर रहे हैं?
सुबोध जोशी


0

संक्षिप्त उत्तर: आप एक वाहक-केवल क्लाइंट का उपयोग करके एक टोकन प्राप्त नहीं कर सकते, लेकिन आप एक टोकन प्राप्त कर सकते हैं केवल एक बियरर ग्राहक ही किसी अन्य क्लाइंट का उपयोग कर स्वीकार कर सकता है।

अधिक विवरण बियरर-केवल क्लाइंट उपयोगी बैक-एंड एप्लिकेशन का प्रतिनिधित्व करता है, जैसे वेब सेवा, जिसे फ्रंट एप्लिकेशन द्वारा कॉल किया जाता है और प्राधिकरण सर्वर (= keycloak) द्वारा सुरक्षित किया जाता है।

बैकएंड / वेब सेवा एप्लिकेशन को उपयोगकर्ता द्वारा सीधे नहीं बुलाया जाता है, इसलिए वे Oauth2.0 उपयोगकर्ता इंटरैक्टिव प्रवाह में नहीं खेल सकते हैं। "बियरर-ओनली" डॉक्यूमेंट को इस तथ्य को कीक्लॉक सर्वर पर सेट करना, प्रशासक को क्लाइंट को अन्यथा अनिवार्य मानों (उदाहरण के लिए रीडायरेक्ट) के बिना कॉन्फ़िगर करने की अनुमति देना और उपयोगी त्रुटि संदेशों की अनुमति देना अगर कोई ऐसे क्लाइंट के लिए टोकन प्राप्त करने की कोशिश कर रहा है।

हालाँकि, इसका मतलब यह नहीं है कि आप इस क्लाइंट के लिए विशिष्ट भूमिकाएँ कॉन्फ़िगर नहीं कर सकते हैं: इसलिए इसे कीक्लॉक दायरे में प्रदर्शित होने की आवश्यकता है।

इसके अलावा बियरर-ओनली क्लाइंट को प्राप्त एक्सेस टोकन को सत्यापित करने की आवश्यकता होती है, विशेष रूप से, अगर यह (अनुशंसित) एडेप्टर सुविधा "सत्यापन-टोकन-ऑडियंस" सक्रिय है, तो बियरर-केवल क्लाइंट को यह सत्यापित करने की आवश्यकता है कि एक्सेस टोकन इसके लिए जारी किया गया है: बियरर-ओनली क्लाइंट एक्सेस टोकन की ऑडियंस विशेषता में होना चाहिए: https://www.keycloak.org/docs/latest/server_admin/index.html#_audience देखें

कीक्लॉक द्वारा प्रबंधित करने वाले दर्शकों के लिए, बियरर-ओनली क्लाइंट को कीक्लॉक दायरे में पंजीकृत होना चाहिए।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.