Halo,
pengaturan saya seperti ini.
mengkilapproxy berjalan dalam wadah buruh pelabuhan dengan nama proxy-mengkilap.
Apache httpd reverse proxy berjalan sebelum shinyproxy dan mengubahnya menjadi https dan berjalan pada host dengan port 2443
keycloak juga berjalan dalam wadah buruh pelabuhan tetapi port terbuka di Host dengan 8443.
setup, aplikasi.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
konfigurasi proxy terbalik apache
<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>
Katakanlah ketika mengakses shinyprox melalui Apache dengan URL https://lxsqlpocnd04 :2443/
itu akan mengarahkan ke halaman login dan halaman login mengarahkan permintaan ke Keycloak Host lxsqlpocnd04 dan port 8443. di URL itu ada string kueri yang menyertakan redirect_uri tetapi bukan yang diharapkan.
URL-nya seperti ini
https://lxsqlpocnd04 :8443/auth/realms/shiny/protocol/openid-connect/auth?response_type=code&client_id=shiny-proxy-p1&redirect_uri=http%3A%2F%2Fshiny-proxy%3A8080%2Fsso%2Flogin&state=00f5e e6a9-4768-8cf8-39d77500fea3&login=true&scope=openid
Dan redirect_uri adalah http://shiny-proxy :8080/sso/login selain https://lxsqlpocnd04 :2443/sso/login
dapatkah seseorang membantu?
Terima kasih,
Robin
Apakah Anda mengatur ini di application.yml?
server:
useForwardHeaders: true
Dari sini: https://www.shinyproxy.io/security/#https -ssl-tls
Tidak yakin apa yang setara dengan Apache tetapi di nginx ini mungkin yang memperbaiki masalah Anda:
proxy_set_header Host $http_host;
@aiham Terima kasih.
Saya memilikinya bekerja. Itu karena tidak ada useForwardHeaders: true
saya menggunakan useForwardHeaders: benar tetapi masih mengalami masalah
@danielfm123
saya menggunakan useForwardHeaders: benar tetapi masih mengalami masalah
Ada kemungkinan lain terkait dengan sertifikat SSL. Jika sertifikat Anda yang diinstal pada Keycloak tidak dipercaya publik (CA root dan perantara tidak ada dalam daftar kepercayaan default dari Java), Anda perlu menambahkannya di CA tepercaya default JRE. JRE adalah yang menjalankan Shinyproxy Anda.
lokasi defaultnya adalah JAVA_HOME---> JRE -->lib---> security--> cacerts JAVA_HOME---> JRE -->lib---> security--> cacerts
perintah untuk mengimpor seperti ini.
keytool -import -noprompt -alias -your-root -file /opt/jboss/your-root.crt -keystore /etc/pki/java/cacerts -storepass changeit
Saya melakukannya, tidak berhasil, saya mencoba shinyproxy 2.3.1 alih-alih 2.4.1 dan mengirimkan redirect_uri yang benar, tetapi hanya berfungsi di beberapa browser, sisanya saya mendapatkan err_too_many_redirects
Apakah sertifikat Anda dipercaya publik? Saya mengalami ini selama fase pengujian, sertifikat tidak dipercaya publik. Anda perlu mengimpor Root CA dan Intermediate CA ke toko tepercaya Browser. Setiap browser berbeda, tergantung pada OS dan Browser Anda. Dalam kasus saya, saya menggunakan Windows, setelah saya mengimpor Sertifikat ke zona tepercaya dan IE dan Chrome berfungsi dengan baik setelah itu.
Ini saran saya,
Itu divalidasi dengan certbot.... Saya berhasil membuatnya bekerja dengan glossyproxy 2.3.1 dan akun direktori aktif yang berbeda...
Tapi ada bug di glossyproxy 2.4.1 dan 2.4.0
Hai @danielfm123 , saya memeriksa beberapa hal di sini, dan saya tidak dapat mereproduksi masalah dengan redirect_uri di ShinyProxy 2.4.0/1.
Bisakah Anda membuka edisi baru dengan informasi berikut? Dengan begitu saya bisa melihat ke dalamnya dan melihat apakah ada bug.
Saya memiliki masalah yang sama.
Setup dengan keycloak, apache2 reverse proxy dan glossyproxy 2.3.1 bekerja dengan baik. Saya menjalankan glossyproxy melalui Docker. Shinyproxy dialihkan dengan benar ke https://testauth.example.com.
Ketika saya beralih ke glossyproxy 2.4.1 redirect_uri berisi IP internal (http://192.168.51.27:8082) alih-alih alamat yang dapat diakses dari luar dan saya mendapatkan kesalahan: "Parameter tidak valid: redirect_uri".
Ini adalah bagian yang relevan dari application.yml saya:
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
Ini adalah konfigurasi apache:
<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>
Hai @eastclintw00d
Silakan coba gunakan:
server:
forward-headers-strategy: "native"
Dari pada
server:
useForwardHeaders: true
Terima kasih!
Hai @LEDfan
Itu memecahkan masalah.
Terima kasih atas respon yang cepat!
Itu berfungsi tetapi itu membunuh paket DT
@danielfm123 Apakah Anda yakin menjalankan glossyproxy 2.4.1? DT bekerja dengan baik untuk saya.
@danielfm123 @eastclintw00d Permintaan POST (seperti yang dibuat misalnya oleh DT) tidak berfungsi saat menggunakan OIDC dengan ShinyProxy saat ini (2.4.1). Perbaikan oleh @LEDfan akan menjadi bagian dari rilis mendatang, tetapi ini bukan topik utas ini.
Masalah dengan permintaan POST sekarang telah diperbaiki dalam rilis 2.4.2
Dokumentasi yang berkaitan dengan masalah asli diperbarui.
Saya akan mengunci masalah ini, sehingga masalah tetap dapat dipertahankan untuk kami.
Tentu saja, seperti biasa jangan ragu untuk membuka edisi baru jika Anda menemui masalah!