Hai,
Telah mencoba mengatur ShinyProxy di https saja. Ini tampaknya mungkin sesuai dengan dokumentasi - https://www.shinyproxy.io/security/#https -ssl-tls
Perhatikan bahwa ketika hanya https yang tersedia (yaitu tidak ada pengalihan dari http yang dikonfigurasi di nginx), diperlukan untuk menambahkan yang berikut ke application.yml untuk menggunakan header penerusan:
server:
gunakanForwardHeaders: benar
Masalahnya adalah ketika mengatur dengan https saja, NGINX ingress dan OpenID, skema https tidak diteruskan dari NGINX ingress ke wadah ShinyProxy yang pada gilirannya menyebabkan sejumlah masalah dengan OpenId. Yaitu:
Alasan ini terjadi adalah karena ShinyProxy menggunakan kode default di sini - spring-security DefaultOAuth2AuthorizationRequestResolver.java # L141
@garyallenkt Apakah Anda dapat mengatasi masalah ini?
Terima kasih!
Setiap pembaruan tentang masalah ini?
OpenAnalytics melakukan pekerjaan yang baik dalam membantu menyelesaikan ini.
Anda seharusnya bisa mendapatkan ShinyProxy versi terbaru (2.3.0) dan mengikuti dokumentasi yang diperbarui di sini - https://www.shinyproxy.io/security/#https -ssl-tls
Semoga berhasil.
Hai @garyallenkt ,
Terima kasih atas respon cepat Anda. Saya mencoba dengan versi terbaru tetapi masalah tetap ada dalam kasus saya. Saya menyematkan seluruh proxy mengkilap di Iframe. Untuk masuk, server mengalihkan koneksi HTTPS ke koneksi HTTP yang tidak diizinkan oleh sebagian besar browser. Apakah Anda tahu bagaimana saya bisa memperbaikinya?
Salam
@fmichielssen
Saya menggunakan garpu dari repo anak Telethon dan mereka juga menggunakan 2.3.0, tetapi hanya untuk memastikan saya juga menarik gambar openanalytics. Untuk referensi Anda, berikut adalah konfigurasi saya.
docker_compose.yaml
version: "3.6"
services:
nginx:
image: nginx:alpine
container_name: tki_nginx
restart: on-failure
networks:
- tki-net
volumes:
- ./nginx.conf:/etc/nginx/nginx.conf
- ./data/certbot/conf:/etc/letsencrypt
- ./data/certbot/www:/var/www/certbot
ports:
- 80:80
- 443:443
command: "/bin/sh -c 'while :; do sleep 6h & wait $${!}; nginx -s reload; done & nginx -g \"daemon off;\"'"
depends_on:
- shinyproxy
certbot:
image: certbot/certbot
container_name: certbot
restart: on-failure
volumes:
- ./data/certbot/conf:/etc/letsencrypt
- ./data/certbot/www:/var/www/certbot
entrypoint: "/bin/sh -c 'trap exit TERM; while :; do certbot renew; sleep 12h & wait $${!}; done;'"
influxdb:
image: influxdb:1.7.3-alpine
container_name: tki_influxdb
restart: on-failure
volumes:
- ./run_first_time.sh:/home/run_first_time.sh
- type: volume
source: shinyproxy_usage
target: /var/lib/influxdb
volume:
nocopy: true
networks:
- tki-net
ports:
- 8083:8083
- 8086:8086
shinyproxy:
depends_on:
- influxdb
image: openanalytics/shinyproxy
container_name: open_analytics_shinyproxy
restart: on-failure
networks:
- tki-net
volumes:
- ./application.yml:/opt/shinyproxy/application.yml
- /var/run/docker.sock:/var/run/docker.sock
expose:
- 8080
networks:
tki-net:
name: tki-net
volumes:
shinyproxy_usage:
application.yaml
proxy:
title: Lorem ipsum
hide-navbar: true
landing-page: /
heartbeat-rate: 10000
heartbeat-timeout: 600000
port: 8080
docker:
internal-networking: true
authentication: openid
openid:
auth-url: https://lorem-ipsum.auth0.com/authorize
token-url: https://lorem-ipsumauth0.com/oauth/token
jwks-url: https://lorem-ipsum.auth0.com/.well-known/jwks.json
client-id: SUPERCOOL
client-secret: SUPERCOOLSECRET
server:
useForwardHeaders: true
specs:
- id: lorem_ipsum
display-name: Lorem Ipsum
description:
container-cmd: ["R", "-e", "shiny::runApp('/root/app')"]
container-image: lorem/ipsum
container-network: tki-net
container-env:
user: "shiny"
environment:
- APPLICATION_LOGS_TO_STDOUT=false
usage-stats-url: http://influxdb:8086/write?db=shinyproxy_usagestats
dan nginx.conf
worker_processes 1;
events {
worker_connections 1024;
}
http {
sendfile on;
upstream tki_shinyproxy {
server open_analytics_shinyproxy:8080;
}
server {
listen 80;
server_name example.org;
server_tokens off;
}
server {
listen 443;
server_name example.org;
server_tokens off;
ssl on;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
# SSL
ssl_certificate /etc/letsencrypt/live/example.org/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/example.org/privkey.pem;
include /etc/letsencrypt/options-ssl-nginx.conf;
ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem;
location / {
proxy_pass http://tki_shinyproxy;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_read_timeout 600s;
proxy_redirect off;
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}
}
Adakah kemungkinan pembaruan tentang ini? @garyallenkt @fmichielssen
Berhasil memperbaikinya.
Kode ini
server:
useForwardHeaders: true
harus di luar proxy:
server
memang blok tingkat atas dan bukan di dalam proxy
Sayangnya saya mengalami masalah yang sama dengan glossyproxy 2.3.1
Saya memiliki blok ini di luar blok proxy di file application.yml
server:
gunakanForwardHeaders: benar
dan saya telah mengatur proxy Nginx dengan tepat seperti yang dijelaskan dalam dokumentasi. Saya juga (untuk menguji apakah saya baru saja membuat kesalahan ngnix bodoh mengatur server Apache dan memiliki masalah yang sama persis).
Blok konfigurasi Nginx saya adalah:
server {
listen 80;
server_name mydomain.com;
rewrite ^(.*) https://$server_name$1 permanent;
}
server {
listen 443 ssl;
server_name mydomain.com;
access_log /var/log/nginx/shinyproxy.access.log;
error_log /var/log/nginx/shinyproxy.error.log error;
ssl on;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_certificate <path to crt>
ssl_certificate_key <path to key>
location / {
proxy_pass http://127.0.0.1:3600/;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_read_timeout 600s;
proxy_redirect off;
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}
Apakah ada yang punya ide tentang apa yang mungkin salah? atau bahkan pemikiran tentang cara memperbaikinya?
Apa kesalahannya? Bisakah Anda membagikan file konfigurasi Anda seperti yang saya lakukan? Mungkin saya bisa membantu Anda
@greenspray terima kasih telah melihat! Saya benar-benar sangat bingung dengan ini! Nginx saya mengonfigurasinya di komentar di atas, dan inilah tampilan application.yml saya:
Selain mengubah port dan menambahkan baris header serverforward, saya telah mencoba untuk menjaga semuanya persis seperti yang diinstal. Saya bahkan menguji ini dengan proxy mengkilap 2.3.0 karena itu tampaknya berfungsi untuk semua orang di utas ini, tetapi itu memiliki masalah yang sama.
proxy:
title: My Title
logo-url: http://www.openanalytics.eu/sites/www.openanalytics.eu/themes/oa/logo.png
landing-page: /
heartbeat-rate: 10000
heartbeat-timeout: 60000
port: 3600
authentication: simple
admin-groups: scientists
users:
- name: jack
password: password1
groups: scientists
- name: jeff
password: password1
groups: mathematicians
# Docker configuration
docker:
cert-path: /home/none
url: http://localhost:2375
port-range-start: 20000
specs:
- id: 01_hello
display-name: Hello Application
description: Application which demonstrates the basics of a Shiny app
container-cmd: ["R", "-e", "shinyproxy::run_01_hello()"]
container-image: openanalytics/shinyproxy-demo
access-groups: [scientists, mathematicians]
server:
useForwardHeaders: true
logging:
file:
shinyproxy3.log
Saya juga menguji menggunakan Apache sebagai server web, dan saya memiliki masalah yang sama. Dua teori saya saat ini adalah bahwa ada sesuatu yang salah dengan pengaturan application.yml saya, atau itu karena saya tidak mengerti proxy/proxy terbalik sehingga ada sesuatu di blok proxy saya yang memungkinkan pengalihan ke http.
@Claire-Kelley apa kesalahan sebenarnya Anda?
@ greenspray9 saya tidak mendapatkan kesalahan! Ini berfungsi dengan baik sehingga ketika saya pergi ke situs web saya, saya dapat melihat halaman login proxy yang mengkilap dan disajikan melalui HTTPS (ini adalah perilaku yang diinginkan). Masalahnya adalah ketika saya masuk (menggunakan otentikasi sederhana untuk saat ini) halaman mulai disajikan melalui HTTP (bukan HTTPS- ini masalahnya!)
@ckelley-ct Maaf saya tidak punya pengalaman dengan jenis login yang Anda inginkan. Mungkin ada semacam pengalihan yang terjadi?
Saya memiliki masalah yang sama, apakah Anda menemukan solusi?
@HEPBO3AH ya saya lakukan - bagi saya masalahnya adalah dengan gambar yang tidak aman (logo-url baris: http://www.openanalytics.eu/sites/www.openanalytics.eu/themes/oa/logo.png di contoh kode di atas). Jika Anda mengubahnya menjadi gambar yang disajikan melalui https atau menghapusnya, maka masalahnya akan teratasi.
@HEPBO3AH @ckelley-ct FYI, kami telah memindahkan gambar ke https://www.openanalytics.eu/shinyproxy/logo.png
Saya berhasil membuat proxy terbalik dengan nginx dan login dengan aman menggunakan otentikasi sederhana, tetapi begitu saya mencoba menggunakan openid gagal karena menggunakan http sebagai protokol panggilan balik:
: Okl3 //52.152.166.27/login/oauth2/code/shinyproxy&nonce=EhOFxVuVRksPOxd0hG-CKPDd2s78bhFIzSSC_PPU5-Q
mendapatkan kesalahan AADSTS50011: URL balasan yang ditentukan dalam permintaan tidak cocok dengan URL balasan yang dikonfigurasi untuk aplikasi: 'd1abf394-b312-4717-a1c4-daaeee4f3b28'.
Ini adalah application.yml saya untuk mengkilapproxy 2.4.0, proxy yang mengkilap 2.3.1 tampaknya berfungsi dari microsoft edge
proxy:
title: Open Analytics Shiny Proxy
logo-url: https://www.openanalytics.eu/shinyproxy/logo.png
landing-page: /
heartbeat-rate: 10000
heartbeat-timeout: 60000
port: 8080
authentication: openid
admin-groups: scientists
#bind-address: 127.0.0.1
# Example: 'simple' authentication configuration
users:
- name: jack
password: password
groups: scientists
- name: jeff
password: password
groups: mathematicians
# Example: 'openid' authentication configuration
openid:
auth-url: https://login.microsoftonline.com/9ac05e7d-e6a1-433a-9801-a60642903c2b/oauth2/authorize
token-url: https://login.microsoftonline.com/9ac05e7d-e6a1-433a-9801-a60642903c2b/oauth2/token
jwks-url: https://login.microsoftonline.com/common/discovery/keys
client-id: d1abf394-b312-4717-a1c4-daaeee4f3b28
client-secret: xxx
# Docker configuration
docker:
container-backend: docker
port-range-start: 20000
container-protocol: https
specs:
- id: euler
display-name: Euler's number
#container-cmd: ["R", "-e", "shiny::runApp('/root/euler')"]
container-image: euler
access-groups: scientists
server:
useForwardHeaders: true
logging:
file:
shinyproxy.log
Saya berhasil membuat proxy terbalik dengan nginx dan login dengan aman menggunakan otentikasi sederhana, tetapi begitu saya mencoba menggunakan openid gagal karena menggunakan http sebagai protokol panggilan balik:
: Okl3 //52.152.166.27/login/oauth2/code/shinyproxy&nonce=EhOFxVuVRksPOxd0hG-CKPDd2s78bhFIzSSC_PPU5-Q
mendapatkan kesalahan AADSTS50011: URL balasan yang ditentukan dalam permintaan tidak cocok dengan URL balasan yang dikonfigurasi untuk aplikasi: 'd1abf394-b312-4717-a1c4-daaeee4f3b28'.
kesalahan yang sama untuk saya dengan 2.4
Hai @danielfm123 , @roberts2727 jadi dengan ShinyProxy 2.4 konfigurasi berikut tidak akan berfungsi lagi:
server:
useForwardHeaders: true
sebagai gantinya Anda harus menggunakan:
server:
forward-headers-strategy: native
Bisakah Anda melaporkan kembali apakah ini menyelesaikan masalah untuk Anda?
Masalah terselesaikan! Terima kasih Pak.
Ya, itu berfungsi tetapi membunuh paket DT
ShinyProxy 2.4 konfigurasi berikut
Apakah layak disebutkan di https://www.shinyproxy.io/security/?
Hai @shosaco ini sudah ditambahkan ke situs web baru kami: https://www.shinyproxy.io/documentation/security/#forward -headers . URL yang Anda tunjuk adalah sisa dari situs web lama, yang sekarang saya bersihkan.
Komentar yang paling membantu
Berhasil memperbaikinya.
Kode ini
harus di luar
proxy: