<p>ينشئ shinyproxy عنوان URL خاطئ لإعادة التوجيه عند استخدام keycloak</p>

تم إنشاؤها على ١٩ يونيو ٢٠٢٠  ·  16تعليقات  ·  مصدر: openanalytics/shinyproxy

سلام،

الإعداد الخاص بي مثل هذا.

يعمل shinyproxy في حاوية عامل ميناء باسم shiny-proxy.

يعمل الوكيل العكسي apache httpd قبل shinyproxy ويحوله إلى https ويعمل على المضيف باستخدام المنفذ 2443
يتم تشغيل keycloak أيضًا في حاوية عامل إرساء ولكن المنفذ مفتوح على المضيف برقم 8443.

الإعداد ، application.xml

 keycloak:
    realm: shiny
    auth-server-url: https://keycloak:8443/auth
    #ssl-required: none
    ssl-required: external
    confidential-port: 2443
    verify-token-audience: true
    resource: shiny-proxy-p1
    credentials-secret: xxxxxxxxxxxx

تكوين وكيل عكسي اباتشي

<VirtualHost *:2443>
  SSLEngine on
  SSLCertificateFile    /etc/apache2/ssl/server-cert.pem
  SSLCertificateKeyFile /etc/apache2/ssl/server-cert.key
  #   Server Certificate Chain:
  #   Point SSLCertificateChainFile at a file containing the
  #   concatenation of PEM encoded CA certificates which form the
  #   certificate chain for the server certificate. Alternatively
  #   the referenced file can be the same as SSLCertificateFile
  #   when the CA certificates are directly appended to the server
  #   certificate for convinience.
  SSLCertificateChainFile /etc/apache2/ssl/server-ca.crt


  <Proxy *>
    Allow from *
  </Proxy>

  RewriteEngine on
 RewriteCond %{HTTP:Upgrade} =websocket
 RewriteRule /(.*) ws://shiny-proxy:8080/$1 [P,L]
 RewriteCond %{HTTP:Upgrade} !=websocket
 RewriteRule /(.*) http://shiny-proxy:8080/$1 [P,L]
 ProxyPass / http://shiny-proxy:8080/
 ProxyPassReverse / http://shiny-proxy:8080/
 ProxyRequests Off

 ErrorLog ${APACHE_LOG_DIR}/proxy_error.log
 CustomLog ${APACHE_LOG_DIR}/proxy_access.log combined

</VirtualHost>

لنفترض أنه عند الوصول إلى shinyprox عبر apache بعنوان URL https: // lxsqlpocnd04 : 2443 /
سيعيد التوجيه إلى صفحة تسجيل الدخول وستقوم صفحة تسجيل الدخول بإعادة توجيه الطلب إلى مضيف Keycloak lxsqlpocnd04 والمنفذ 8443. في عنوان URL هذا ، توجد سلسلة استعلام تتضمن redirect_uri ولكنها ليست السلسلة المتوقعة.

عنوان URL مثل هذا
https: // lxsqlpocnd04 : 8443 / auth /

و redirect_uri هو http: // shiny-proxy : 8080 / sso / تسجيل الدخول بخلاف https: // lxsqlpocnd04 : 2443 / sso / login

هل يستطيع احد المساعدة

شكرا،

روبن

question

ال 16 كومينتر

هل قمت بتعيين هذا في application.yml؟

server:
  useForwardHeaders: true

من هنا: https://www.shinyproxy.io/security/#https -ssl-tls

لست متأكدًا مما هو مكافئ Apache ولكن في nginx ربما يكون هذا هو ما يصلح مشكلتك:

    proxy_set_header  Host    $http_host;

aiham شكرا.

لدي العمل. إنه بسبب فقدان useForwardHeaders: true

im باستخدام useForwardHeaders: صحيح ولكن لا تزال تواجه المشكلة

@ danielm123

im باستخدام useForwardHeaders: صحيح ولكن لا تزال تواجه المشكلة

هناك احتمال آخر يتعلق بشهادات SSL. إذا كانت شهاداتك المثبتة على Keycloak غير موثوقة بشكل عام (المرجع المصدق الجذر والمتوسط ​​ليس في قائمة الثقة الافتراضية من Java) ، فأنت بحاجة إلى إضافتها في المرجع المصدق الافتراضي الموثوق به JRE. JRE هو الذي يدير Shinyproxy الخاص بك.

الموقع الافتراضي هو JAVA_HOME ---> JRE -> lib ---> الأمان -> cacerts JAVA_HOME ---> JRE -> lib ---> الأمان -> cacerts

أوامر لاستيراد مثل هذا.

keytool -import -noprompt -alias -your-root -file /opt/jboss/your-root.crt -keystore / etc / pki / java / cacerts -storepass changeit

لقد فعلت ذلك ، لا يعمل ، لقد جربت shinyproxy 2.3.1 بدلاً من 2.4.1 وأرسلت redirect_uri الصحيح ، ولكنها تعمل فقط في بعض المتصفحات ، وفي البقية أحصل على err_too_many_redirects

هل شهاداتك موثوقة بشكل عام؟ واجهت هذا أثناء مرحلة الاختبار ، حيث إن الشهادات ليست موثوقة بشكل عام. تحتاج إلى استيراد المرجع المصدق الجذر والمرجع المصدق المتوسط ​​إلى المتجر الموثوق به للمتصفح. يختلف كل متصفح باختلاف نظام التشغيل والمستعرض لديك. في حالتي ، أنا أستخدم Windows ، بعد أن أقوم باستيراد الشهادات إلى المنطقة الموثوقة ويعمل كل من IE و Chrome بشكل جيد بعد ذلك.

هذا هو اقتراحي ،

  1. أثناء مرحلة الاختبار ، طالما أن لديك متصفحًا واحدًا يعمل ، فسيكون ذلك جيدًا بدرجة كافية.
  2. لنشر الإنتاج ، أضف وكيل ويب آمن قبل shinyproxy و keycloak. قم بتكوينه لاستخدام SSL من وكيل الويب واستخدم الشهادات العامة الموثوقة. هذا هو أفضل هيكل نشر آمن. إذا لم يكن لدى مؤسستك وكيل ويب آمن للأجهزة ، فيمكنك استخدام Apache HTTPD كوكيل ويب عكسي وموازن تحميل أيضًا.

تم التحقق من صحتها باستخدام certbot .... تمكنت من جعله يعمل مع shinyproxy 2.3.1 وحساب دليل نشط مختلف ...

ولكن هناك خطأ في shinyproxy 2.4.1 و 2.4.0

مرحبًا @ danielfm123 ، لقد راجعت بعض الأشياء هنا ، ولا يمكنني إعادة إنتاج أي مشاكل مع redirect_uri في ShinyProxy 2.4.0 / 1.
هل يمكنك فتح عدد جديد بالمعلومات التالية؟ بهذه الطريقة يمكنني النظر في الأمر ومعرفة ما إذا كان هناك خطأ.

  • كيف تدير ShinyProxy (باستخدام الجرة و Docker و Kubernetes وما إلى ذلك)
  • قم بتوفير ملف application.yaml الخاص بك (قم بإزالة القيم الحساسة) انظر هنا كيف يمكنك الرمز البريدي

    • هل تستخدم موازن التحميل أم وكيل عكسي؟ أيهما ، كيف يتم تكوينه (على سبيل المثال ، هل يمر برؤوس X-Forwarded) إلخ

    • أي مزود openid تستخدمه؟ هل تم تكوين عناوين url لرد الاتصال بشكل صحيح؟

    • هل shinyproxy يسجل أي خطأ؟ يرجى إعطاء تتبع المكدس الكامل.

لدي نفس المشكلة.

الإعداد باستخدام keycloak و apache2 reverse proxy و shinyproxy 2.3.1 يعمل بشكل جيد. أركض shinyproxy عبر Docker. يُعيد Shinyproxy التوجيه بشكل صحيح إلى https://testauth.example.com.

عندما أقوم بالتبديل إلى shinyproxy 2.4.1 ، يحتوي redirect_uri على IP الداخلي (http://192.168.51.27:8082) بدلاً من العنوان الذي يمكن الوصول إليه من الخارج وأحصل على خطأ: "المعلمة غير صالحة: redirect_uri".

هذا هو الجزء المناسب من طلبي. iml:

proxy:
  title: AUTHTEST
  hide-navbar: false
  template-path: /templates
  favicon-path: /www/favicon.png
  heartbeat-rate: 10000
  heartbeat-timeout: 600000
  port: 8080
  admin-groups: admin
  container-wait-time: 30000
  authentication: keycloak
  keycloak:
    realm: shinyr
    auth-server-url: http://192.168.51.122:8080/auth
    resource: shinyr
    credentials-secret: <secret>
  docker:
    internal-networking: true
  specs:
  - id: test
    display-name: Euler App
    description: Test App
    container-cmd: ["R", "-e", "shiny::runApp('/root/euler')"]
    container-image: saletelligence/test
    container-network: authtest_authtest_net
    access-groups: [admin, pm]
logging:
  file:
    shinyproxy.log
server:
  useForwardHeaders: true

هذا هو تكوين اباتشي:

<VirtualHost *:443>
        RequestHeader set X-Forwarded-Proto "https"
        RequestHeader set X-Forwarded-Port "443"
        ServerName testauth.example.com

        RewriteEngine On
        RewriteCond %{HTTP:Upgrade} =websocket
        RewriteRule /(.*) ws://192.168.51.27:8082/$1 [P,L]
        RewriteCond %{HTTP:Upgrade} !=websocket
        RewriteRule /(.*) http://192.168.51.27:8082/$1 [P,L]
        ProxyRequests Off

        ProxyPass "/" "http://192.168.51.27:8082/"
        ProxyPassReverse "/" "http://192.168.51.27:8082/"

        SSLProxyEngine On
        SSLEngine On
        SSLCertificateFile /etc/apache2/sslcert/example.crt
        SSLCertificateKeyFile /etc/apache2/sslcert/example_pem.key
        SSLCACertificateFile /etc/apache2/sslcert/example_bundle.pem
</VirtualHost>

مرحبًا @ eastclintw00d

الرجاء محاولة استخدام:

server:
  forward-headers-strategy: "native"

بدلا من

server:
  useForwardHeaders: true

شكرا!

مرحبًا LEDfan

هذا حل المشكلة.

شكرا للاستجابة السريعة!

هذا يعمل لكنه يقتل الحزمة DT

@ danielfm123 هل أنت متأكد من تشغيل shinyproxy 2.4.1؟ DT يعمل بشكل جيد بالنسبة لي.

@ danielfm123 @ eastclintw00d طلبات POST (كما تم إجراؤها على سبيل المثال بواسطة DT) لا تعمل عند استخدام OIDC مع ShinyProxy الحالي (2.4.1). إصلاح بواسطة LEDfan سيكون جزءًا من الإصدار القادم ، ولكن هذا ليس موضوع هذا الموضوع.

تم الآن إصلاح مشكلة طلب POST في الإصدار 2.4.2

يتم تحديث الوثائق المتعلقة بالإصدار الأصلي.

سأغلق هذه المشكلة ، حتى تظل المشكلات قابلة للإصلاح بالنسبة لنا.
بالطبع ، كما هو الحال دائمًا ، لا تتردد في فتح إصدار جديد إذا واجهت أي مشكلة!

هل كانت هذه الصفحة مفيدة؟
0 / 5 - 0 التقييمات