कीलक क्लो अवैध पैरामीटर: redirect_uri


86

जब मैं keycloak से उपयोगकर्ता को प्रमाणित करने के लिए अपने एपीआई से हिट करने की कोशिश कर रहा हूं, लेकिन इसकी मुझे त्रुटि दे रहा है अमान्य पैरामीटर: keycloak पृष्ठ पर redirect_uri। मैंने गुरु से अलग अपना क्षेत्र बनाया है। की-क्लोक http पर चल रहा है। क्रिप्या मेरि सहायता करे।


निरीक्षण तत्व के माध्यम से जाँच करते समय इसकी 500 त्रुटि दिखाते हुए
VIJAY THAKUR

2
कृपया एक ही प्रश्न को कई बार पोस्ट न करें । यदि आप अपने मूल प्रश्न में अधिक विवरण जोड़ना चाहते हैं, तो आप अपने प्रश्न के नीचे सीधे 'संपादन' पर क्लिक करके ऐसा कर सकते हैं।
थेल्पर


1
रीडायरेक्ट url में https बनाम http के लिए जाँच करें
थॉमसआरएस

1
मेरे मामले में यह एक गम्भीर गलती थी: "<IP एड्रेस>" के बजाय "http: // <IP एड्रेस>"
स्विसनावी

जवाबों:


56

मेरे लिए जो काम किया गया था वह '' * '' जोड़ रहा था । हालांकि प्रोडक्शन बिल्ड के लिए, मैं इस क्षेत्र के मूल्य के साथ अधिक विशिष्ट होने जा रहा हूं। लेकिन देव उद्देश्यों के लिए आप ऐसा कर सकते हैं।

यहां छवि विवरण दर्ज करें

के तहत उपलब्ध सेटिंग, कुंजीलोक व्यवस्थापक कंसोल -> Realm_Name -> ग्राहक -> Client_Name

संपादित करें: उत्पादन में इस मत करो। ऐसा करना एक बड़ी सुरक्षा दोष पैदा करता है।


13
यह उत्तर एक खतरनाक सुरक्षा दोष हो सकता है, ऐसा करने से आप असुरक्षित पुनर्निर्देशन के द्वार खोलते हैं।
माइकल कोर्टी

मैं इस जवाब पर विश्वास नहीं कर सकता कि वर्तमान में शीर्ष वोट हैं। यह एक समाधान से बहुत दूर है और इसे केवल टिप्पणियों में दिखाई देना चाहिए। दूसरी ओर, प्रश्न में बहुत कम जानकारी होती है, यहां तक ​​कि उत्तर देने की कोशिश भी।
बेस्वरिनो

अगर हम मोबाइल ऐप (रिएक्ट नेटिव कोडेड) से कीक्लॉक का उपयोग करते हैं तो हमें क्या करना चाहिए?
सेबेस्टियन डियाज

35

यदि आप एक .Net डेव्लपर हैं, तो कृपया नीचे की जाँच करें कॉन्फ़िगरेशन कुंजी की क्लोक ऑथेंटिकेशन ऑप्शन क्लास सेट कॉलबैकपैथ = रीडायरेक्ट्री, // इस प्रॉपर्टी को अन्य वार सेट करने की आवश्यकता है, यह अमान्य रीडायरेक्ट्री त्रुटि दिखाएगी

मैंने उसी त्रुटि का सामना किया। मेरे मामले में, वैध रीडायरेक्ट URI के साथ मुद्दा सही नहीं था। तो ये वो चरण हैं जिनका मैंने पालन किया।

पहले एक व्यवस्थापक उपयोगकर्ता के रूप में की-लौक करें। फिर अपने दायरे का चयन करें (हो सकता है कि आप दायरे में ऑटो-डायरेक्ट हों)। फिर आपको निचे स्क्रीन दिखाई देगी

यहां छवि विवरण दर्ज करें

बाएं पैनल से ग्राहक चुनें । फिर संबंधित क्लाइंट का चयन करें जिसे आपने अपने ऐप के लिए कॉन्फ़िगर किया था। डिफ़ॉल्ट रूप से, आप सेटिंग टैब होंगे, यदि इसे नहीं चुनते हैं। मेरा ऐप पोर्ट 3000 पर चल रहा था, इसलिए मेरी सही सेटिंग नीचे की तरह है। मान लीजिए कि आपके पास लोकलहोस्ट: 3000 पर एक ऐप है, इसलिए आपकी सेटिंग इस तरह होनी चाहिए

यहां छवि विवरण दर्ज करें


19

यदि आपके द्वारा बनाए गए एक नए दायरे के कारण आपको यह त्रुटि हो रही है

उस URL में जिसे आप रीडायरेक्ट किया गया है (आपको इस URL के लिए Chrome देव टूल में देखना पड़ सकता है), masterआपके द्वारा अभी बनाए गए से दायरे को बदलें , और यदि आप उपयोग नहीं कर रहे हैं https, तो सुनिश्चित करें कि रीडायरेक्ट_यूरी भी उपयोग कर रहा हैhttp

यदि आपको यह त्रुटि मिल रही है क्योंकि आप Keycloak को किसी सार्वजनिक सामना करने वाले डोमेन (लोकलहोस्ट नहीं) पर सेट करने का प्रयास कर रहे हैं

चरण 1) MySql डेटाबेस सेटअप करने के लिए इस दस्तावेज़ का पालन करें । आपको आधिकारिक दस्तावेज को संदर्भित करने की भी आवश्यकता हो सकती है ।

चरण 2) कमांड चलाएंupdate REALM set ssl_required = 'NONE' where id = 'master';

ध्यान दें: इस बिंदु पर, आपको तकनीकी रूप से लॉगिन करने में सक्षम होना चाहिए, लेकिन Keycloak का संस्करण 4.0 भले ही हम https समर्थन बंद कर दिया हो, भले ही रीडायरेक्ट uri के लिए https का उपयोग कर रहा हो। जब तक कीक्लोक इसे ठीक नहीं करता, तब तक हम रिवर्स प्रॉक्सी के साथ इसे प्राप्त कर सकते हैं। रिवर्स प्रॉक्सी वह चीज है जिसका उपयोग हम जावा कीस्टोर्स के बारे में चिंता किए बिना आसानी से एसएसएल / टीएलएस प्रमाणपत्र बनाने के लिए किसी भी तरह से करना चाहेंगे।

नोट 2: कीक्लॉक तब से अपनी खुद की प्रॉक्सी लेकर आया है। मैंने अभी तक इसकी कोशिश नहीं की है, लेकिन इस बिंदु पर, आप मेरे निर्देशों का पालन करना बंद कर सकते हैं और चेक आउट कर सकते हैं (कीकोलोक गेटकीपर) [ https://www.keycloak.org/downloads.html] । यदि आपको Keycloak Gatekeeper स्थापित करने में समस्या है, तो मैं अपाचे के साथ एक रिवर्स प्रॉक्सी सेट करने के लिए अपने निर्देश चारों ओर रखूंगा।

चरण 3) अपाचे स्थापित करें। हम अपाचे को रिवर्स प्रॉक्सी के रूप में उपयोग करेंगे (मैंने एनजीआईएनएक्स की कोशिश की, लेकिन एनजीआईएनएक्स की कुछ सीमाएं थीं जो रास्ते में मिलीं)। अपाचे (सेंटो 7) स्थापित करते हुए यम देखें , और एपाचे (उबंटू 16) स्थापित करें , या अपने मोबाइल डिस्ट्रो के लिए निर्देश ढूंढें।

चरण 4) अपाचे चलाएँ

  • का प्रयोग करें sudo systemctl start httpd(CentOs) या sudo systemctl start apache2(Ubuntu)

  • का प्रयोग करें sudo systemctl status httpd(CentOS) या sudo systemctl status apache2 अगर अपाचे चल रहा है (Ubuntu) की जाँच करने के। यदि आप हरे रंग के पाठ में शब्दों को देखते हैं active (running)या यदि अंतिम प्रविष्टि पढ़ते हैं Started The Apache HTTP Server.तो आप अच्छे हैं।

चरण 5) हम रिवर्स प्रॉक्सी के साथ एक एसएसएल कनेक्शन स्थापित करेंगे, और फिर रिवर्स प्रॉक्सी http पर की-क्लोक से संवाद करेगा। क्योंकि यह http संचार एक ही मशीन पर हो रहा है, आप अभी भी सुरक्षित हैं। हम स्वतः-नवीनीकरण प्रमाणपत्र सेट करने के लिए सर्बोट का उपयोग कर सकते हैं ।

यदि इस प्रकार का एन्क्रिप्शन पर्याप्त अच्छा नहीं है, और आपकी सुरक्षा नीति के लिए एंड-टू-एंड एन्क्रिप्शन की आवश्यकता होती है, तो आपको रिवर्स प्रॉक्सी का उपयोग करने के बजाय, SSL को WildFly के माध्यम से सेटअप करने का तरीका पता लगाना होगा ।

नोट: मैं वास्तव में व्यवस्थापक पोर्टल के साथ ठीक से काम करने के लिए https पाने में सक्षम नहीं था। शायद यह सिर्फ Keycloak 4.0 के बीटा संस्करण में एक बग हो सकता है जिसका मैं उपयोग कर रहा हूं। आपको लगता है कि SSL स्तर को केवल बाहरी अनुरोधों के लिए निर्धारित करने में सक्षम होना चाहिए, लेकिन यह काम नहीं करता था, यही कारण है कि हम चरण # 2 में से किसी में भी https सेट नहीं करते हैं। यहां से हम एडमिन सेटिंग्स को मैनेज करने के लिए SSH टनल के ऊपर http का उपयोग करना जारी रखेंगे।

चरण 6) जब भी आप https के माध्यम से साइट पर जाने का प्रयास करते हैं, तो आप एक HSTS नीति को ट्रिगर करेंगे जो http के अनुरोधों को https में पुनर्निर्देशित करने के लिए ऑटो-बल देगा। Chrome से HSTS नियम को साफ़ करने के लिए इन निर्देशों का पालन करें , और फिर कुछ समय के लिए, साइट के https संस्करण पर दोबारा न जाएँ।

चरण 7) अपाचे को कॉन्फ़िगर करें। सबसे पहले खोजें कि आपकी httpd.conf फ़ाइल कहाँ स्थित है । आपकी httpd.conf फाइल संभवत: एक अलग निर्देशिका से कॉन्फिग फाइलों को सम्‍मिलित करती है। मेरे मामले में, मुझे मेरे सभी कॉन्फ़िगर फ़ाइल conf.dको httpd.conf फ़ाइल फ़ोल्डर से सटे एक निर्देशिका में मिली थी।

एक बार जब आप अपनी गोपनीय फाइलों को ढूंढ लेते हैं, तो अपनी गोपनीय फाइलों में निम्नलिखित, वर्चुअल होस्ट प्रविष्टियों को जोड़ सकते हैं, बदल सकते हैं या जोड़ सकते हैं। सुनिश्चित करें कि आप पहले से ही मौजूद एसएसएल विकल्पों को ओवरराइड नहीं करते हैं, जहां सर्टिफिकेट द्वारा उत्पन्न होता है। जब किया जाता है, तो आपकी कॉन्फ़िग फ़ाइल कुछ इस तरह दिखनी चाहिए।

<VirtualHost *:80>
    RewriteEngine on

    #change https redirect_uri parameters to http
    RewriteCond %{request_uri}\?%{query_string} ^(.*)redirect_uri=https(.*)$
    RewriteRule . %1redirect_uri=http%2 [NE,R=302]

    #uncomment to force https
    #does not currently work
    #RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI}

    #forward the requests on to keycloak
    ProxyPreserveHost On    
    ProxyPass / http://127.0.0.1:8080/
    ProxyPassReverse / http://127.0.0.1:8080/
</VirtualHost>

<IfModule mod_ssl.c>
<VirtualHost *:443>
    RewriteEngine on

    #Disable HSTS
    Header set Strict-Transport-Security "max-age=0; includeSubDomains;" env=HTTPS


    #change https redirect_uri parameters to http
    RewriteCond %{request_uri}\?%{query_string} ^(.*)redirect_uri=https(.*)$
    RewriteRule . %1redirect_uri=http%2 [NE,R=302]

    #forward the requests on to keycloak
    ProxyPreserveHost On
    ProxyPass / http://127.0.0.1:8080/
    ProxyPassReverse / http://127.0.0.1:8080/

    #Leave the items added by certbot alone
    #There should be a ServerName option
    #And a bunch of options to configure the location of the SSL cert files
    #Along with an option to include an additional config file

</VirtualHost>
</IfModule>

चरण 8) अपाचे को पुनरारंभ करें। sudo systemctl restart httpd(CentOs) या sudo systemctl restart apache2(Ubuntu) का उपयोग करें ।

चरण 9) इससे पहले कि आपके पास सर्वर में प्रवेश करने का प्रयास करने का मौका हो, क्योंकि हमने Keycloak को http का उपयोग करने के लिए कहा था, इसलिए हमें सुरक्षित रूप से कनेक्ट होने के दूसरे तरीके को सेटअप करने की आवश्यकता है। यह keycloak सर्वर पर एक वीपीएन सेवा स्थापित करके, या SOCKS का उपयोग करके किया जा सकता है। मैंने एक SOCKS प्रॉक्सी का उपयोग किया। ऐसा करने के लिए, आपको सबसे पहले डायनेमिक पोर्ट फ़ॉरवर्डिंग सेटअप करना होगा।

ssh -N -D 9905 user@example.com

या इसे पोटीन के माध्यम से सेट करें ।

9905 पोर्ट पर भेजे गए सभी ट्रैफ़िक को अब आपके सर्वर पर SSH सुरंग के माध्यम से सुरक्षित रूप से रूट किया जाएगा। सुनिश्चित करें कि आप अपने सर्वर के फ़ायरवॉल पर श्वेतसूची पोर्ट 9905 करें।

एक बार जब आपके पास डायनेमिक पोर्ट फ़ॉरवर्डिंग सेटअप होता है, तो आपको पोर्ट 9905 पर SOCKS प्रॉक्सी का उपयोग करने के लिए अपने ब्राउज़र को सेटअप करना होगा । यहाँ निर्देश

चरण 10) अब आपको Keycloak admin पोर्टल पर लॉगिन करने में सक्षम होना चाहिए। वेबसाइट से कनेक्ट करने के लिए http://127.0.0.1 पर जाएं , और SOCKS प्रॉक्सी आपको व्यवस्थापक कंसोल पर ले जाएगा। सुनिश्चित करें कि जब आप अपने सर्वर के संसाधनों का उपयोग करते हैं, तो आप SOCKS प्रॉक्सी को बंद कर देंगे, और यदि आपके पास रखे तो आपके लिए यह धीमी इंटरनेट स्पीड होगी।

चरण 11) मुझे यह मत पूछो कि मुझे यह सब पता लगाने में कितना समय लगा।


1
यह वह रेखा थी जिसने मेरा ध्यान आकर्षित किया: httpcriteCond% {request_uri} \!% {Query_string} ^ (। *) Redirect_uri = https (। % 1redirect_uri = http% 2 [NE, R = 302] मैं nginx का उपयोग कर रहा हूं, लेकिन जैसे ही मैंने https को http पर पुनः निर्देशित किया, पुनर्निर्देशित किया गया।
तेलमो डायस

9

Keycloak व्यवस्थापक कंसोल> SpringBootKeycloak> ग्राहकों> लॉगिन-ऐप पृष्ठ पर जाएं। यहां वैध-पुनर्निर्देशित यूरिस अनुभाग में http: // localhost: 8080 / sso / लॉगिन जोड़ें

इससे अप्रत्यक्ष-उरी समस्या को हल करने में मदद मिलेगी


13
समस्या यह है कि व्यवस्थापक कंसोल पहुँच योग्य नहीं है।
स्मॉलकैश

Keycloak की web-contextसेटिंग को संशोधित करने के बाद मुझे यह समस्या मिली
मार्क

5

यदि आप Keycloak संदर्भ पथ में संशोधन करने के बाद इस समस्या को देख रहे हैं, तो आपको एक url सेटिंग पुनर्निर्देशित करने के लिए अतिरिक्त परिवर्तन करने की आवश्यकता होगी:

  1. स्टैंडअलोन.xml में <web-context>yourchange/auth</web-context>वापस बदलें<web-context>auth</web-context>
  2. Keycloak को पुनरारंभ करें और लॉगिन पृष्ठ पर जाएँ ( /auth/admin)
  3. लॉग इन करें और "मास्टर" क्षेत्र चुनें
  4. साइड मेनू से "ग्राहक" चुनें
  5. दिखाई देने वाली सूची से "सुरक्षा-व्यवस्थापक-कंसोल" क्लाइंट का चयन करें
  6. "मान्य रीडायरेक्ट URI" से /auth/admin/master/console/*इसे बदलें/yourchange/auth/admin/master/console/*
  7. सहेजें और साइन आउट करें। साइन आउट करने के बाद आपको फिर से "अमान्य रीडायरेक्ट यूआरएल" संदेश दिखाई देगा।
  8. अब, <web-context>yourchange/auth</web-context>स्टैंडअलोन.xml में अपने मूल परिवर्तन को रखें। Keycloak को फिर से शुरू करें और लॉगिन पेज पर जाएँ (जो अब है /yourchange/auth/admin)
  9. लॉग इन करें और आनंद लें

1
वैकल्पिक रूप से, आप redirect_urisडीबी में तालिका को संपादित कर सकते हैं और मान फ़ील्ड
pHiL

4

Keycloak admin कंसोल वेबसाइट में लॉग इन करें, दायरे और उसके क्लाइंट का चयन करें, फिर सुनिश्चित करें कि क्लाइंट के सभी URI प्रोटोकॉल के साथ उपसर्ग कर रहे हैं, http://उदाहरण के लिए। एक उदाहरण होगाhttp://localhost:8082/*

समस्या को हल करने का एक और तरीका है, Keycloak सर्वर कंसोल आउटपुट को देखने के लिए, अनुरोध से इनकार करने वाली पंक्ति का पता लगाने से इनकार कर दिया गया था, इसे redirect_uriप्रदर्शित मूल्य से कॉपी करें और * Valid Redirect URIsक्लाइंट के क्षेत्र में Keycloak व्यवस्थापक कंसोल वेबसाइट में पेस्ट करें। अनुरोधित URI तब स्वीकृतियों में से एक है।


2

मुझे अमान्य पैरामीटर का सामना करना पड़ा: http://www.baeldung.com/spring-boot-keycloak पर उपलब्ध स्प्रिंग बूट और कीक्लॉक उदाहरण का अनुसरण करते हुए समस्या का पुनर्निर्देशन । जब कीलक सर्वर से क्लाइंट को जोड़ते हैं तो हमें उस क्लाइंट के लिए रीडायरेक्ट URI प्रदान करना होगा ताकि कीक्लॉक सर्वर रीडायरेक्ट कर सके। जब मुझे एक ही त्रुटि का कई बार सामना करना पड़ा, तो मैंने की-क्लोक सर्वर कंसोल से सही URL की प्रतिलिपि बनाई और मान्य रीडायरेक्ट URIs स्थान में प्रदान किया और यह ठीक काम किया!


क्या आप बता सकते हैं कि इसका काम कैसे हुआ
सुबिन बाबू

2

यहां तक ​​कि मैंने भी इसी मुद्दे का सामना किया। मैंने इसे अपने पूर्ण URL के बाद क्रमशः रीडायरेक्ट URL ऐड * के अंतर्गत विशेष क्लाइंट में जाकर ठीक किया।

समस्या हल हो जाएगी

उदाहरण: रीडायरेक्ट URI: http: localhost: 3000 / myapp / जनरेटर / *


2

मैंने उसी मुद्दे का सामना किया। मैंने इसे अपने पूर्ण URL के बाद क्रमशः रीडायरेक्ट URL ऐड * के अंतर्गत विशेष क्लाइंट में जाकर ठीक किया।


2

मेरे लिए, मेरे पास /मूल्य के लिए एक लापता ट्रेलिंग स्लैश थाValid Redirect URIs



1

आपको कीकॉलाक व्यवस्थापक कंसोल की जांच करने की आवश्यकता है जो सामने वाले विन्यास के लिए है। इसे रीडायरेक्ट url और वेब मूल के लिए गलत तरीके से कॉन्फ़िगर किया जाना चाहिए।


1

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


1

यह त्रुटि तब भी डाली जाती है जब आपके उपयोगकर्ता के पास उपयोगकर्ता परिभाषा में अपेक्षित भूमिका नहीं होती है (ड्रॉप डाउन में दायरे के लिए भूमिका निर्धारित करें)।


0

आपके कोड में आपका रीडायरेक्ट URI (keycloak.init) कीलक सर्वर (क्लाइंट -> मान्य उड़ी) पर रीडायरेक्ट किए गए URI के समान होना चाहिए मेरे कोड की छवि देखने के लिए क्लिक करें मेरी कीक्लॉक सेटिंग देखने के लिए क्लिक करें


0

जांचें कि आपके द्वारा उपयोग किए जा रहे क्लाइंट के लिए redirect_uri पैरामीटर का मान सफ़ेद किया गया है। आप व्यवस्थापक कंसोल के माध्यम से क्लाइंट के कॉन्फ़िगरेशन को प्रबंधित कर सकते हैं।

रीडायरेक्ट uri को श्वेतसूची में पुनर्निर्देशित uri में से किसी एक के साथ मेल खाना चाहिए, या आप जिस श्वेतसूची में करना चाहते हैं, उसके अंत में आप वाइल्डकार्ड का उपयोग कर सकते हैं। देखें: https://www.keycloak.org/docs/latest/server_admin/#_clients

ध्यान दें कि वाइल्डकार्ड्स का उपयोग वाइटेलिस्ट पुनर्निर्देशित यूरी की कीक्लॉक द्वारा करने की अनुमति है, लेकिन वास्तव में ओपनआईड कनेक्ट विनिर्देश का उल्लंघन है। इस पर चर्चा https://lists.jboss.org/pipermail/keycloak-dev/2018-Deidential/011440.html पर देखें


0

ऐसा लगता है कि यदि आप अपने दायरे में व्हॉट्सएप डालते हैं तो यह समस्या हो सकती है। मेरे पास नाम सेट था Debugging Realmऔर मुझे यह त्रुटि मिली। जब मैंने इसमें बदलाव किया DebuggingRealmतो काम किया।

आप अभी भी प्रदर्शन नाम में व्हॉट्सएप कर सकते हैं। अजीब कि keycloak व्यवस्थापक इनपुट पर इसके लिए जाँच नहीं करता है।

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