やあ、
httpsでのみShinyProxyを設定しようとしました。 これは、ドキュメントに従って可能であるようです-https : //www.shinyproxy.io/security/#https -ssl-tls
httpsのみが使用可能な場合(つまり、nginxで構成されたhttpからのリダイレクトがない場合)、フォワードヘッダーを使用するには、application.ymlに以下を追加する必要があることに注意してください。
サーバ:
useForwardHeaders:true
問題は、httpsのみ、NGINX入力、およびOpenIDを使用してセットアップする場合、httpsスキームがNGINX入力からShinyProxyコンテナーに渡されないため、OpenIdで多くの問題が発生することです。 すなわち:
これが発生する理由は、ShinyProxyがここでデフォルトコードを使用しているためです-spring-security DefaultOAuth2AuthorizationRequestResolver.java#L141
@garyallenktこの問題を回避できましたか?
ありがとう!
この問題に関する更新はありますか?
OpenAnalyticsは、これを解決するのに素晴らしい仕事をしました。
最新バージョンのShinyProxy(2.3.0)を入手し、ここで更新されたドキュメントに従うことができるはずです-https : //www.shinyproxy.io/security/#https -ssl-tls
幸運を祈ります。
こんにちは@garyallenkt 、
迅速な対応ありがとうございます。 最新バージョンで試しましたが、私の場合は問題が解決しません。 shinyproxy全体をIframeに埋め込んでいます。 ログインするために、サーバーはHTTPS接続をほとんどのブラウザーで許可されていないHTTP接続にリダイレクトします。 私がこれを修正する方法を知っていますか?
よろしく
@fmichielssen
Telethonキッズレポのフォークを使用していて、2.3.0も使用していますが、念のため、openanalyticsのイメージも取得しました。 参考までに、ここに私の設定があります。
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
および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;
}
}
}
これに関する可能な更新はありますか? @garyallenkt @fmichielssen
なんとか修正できました。
このコード
server:
useForwardHeaders: true
proxy:
外にある必要があります
server
は確かにトップレベルのブロックであり、 proxy
内部で
残念ながら、shinyproxy2.3.1でも同じ問題が発生しています。
application.ymlファイルのプロキシブロックの外にこのブロックがあります
サーバ:
useForwardHeaders:true
ドキュメントに記載されているように、Nginxプロキシをexacltyに設定しています。 私も(Apacheサーバーのセットアップでばかげたngnixエラーが発生し、まったく同じ問題が発生したかどうかをテストするため)。
私のNginx構成ブロックは次のとおりです。
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;
}
}
何が悪いのかについて誰かが何か考えを持っていますか? またはそれを修正する方法についての考えさえ?
エラーは何ですか? 私のように設定ファイルを共有できますか? 多分私はあなたを助けることができます
@greensprayご覧いただきありがとうございます! 私は本当にこれにとても困惑しています! 私のNginxは上記のコメントでそれを構成します、そしてこれは私のapplication.ymlがどのように見えるかです:
ポートを変更してserverforwardヘッダー行を追加する以外は、インストールされたとおりにすべてを維持しようとしました。 光沢のあるプロキシ2.3.0を使用してこれをテストしたこともあります。これは、このスレッドのすべてのユーザーにとって機能しているように見えたためですが、同じ問題がありました。
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
代わりにApacheをWebサーバーとして使用してテストしましたが、同じ問題が発生します。 私の現在の2つの理論は、application.ymlの設定に問題があるか、プロキシ/リバースプロキシを理解していないため、プロキシブロック内の何かがhttpへのリダイレクトを許可しているというものです。
@クレア-ケリーあなたの正確なエラーは何ですか?
@ greenspray9エラーが発生していません! これは完全に機能するため、自分のWebサイトにアクセスすると、光沢のあるプロキシログインページが表示され、HTTPS経由で提供されます(これは望ましい動作です)。 問題は、(今のところ単純な認証を使用して)ログインすると、ページがHTTP経由で提供され始めることです(HTTPSではありません-これが問題です!)
@ ckelley-ct申し訳ありませんがあなたが望むログインの種類についての経験がありません。 たぶん、ある種のリダイレクトが起こっているのでしょうか?
私は同じ問題を抱えています、あなたは解決策を見つけましたか?
@ HEPBO3AHはい、私はそうしました-私にとって問題は安全でない画像にありました(行logo-url:http:
@ HEPBO3AH @ ckelley-ct参考までに、画像をhttps://www.openanalytics.eu/shinyproxy/logo.pngに移動しました
nginxでリバースプロキシを作成し、単純な認証を使用して安全にログインすることができましたが、openidを使用しようとすると、コールバックプロトコルとしてhttpを使用するため、失敗します。
https://login.microsoftonline.com/9ac05e7d-e6a1-433a-9801-a60642903c2b/oauth2/authorize?response_type=code&client_id=d1abf394-b312-4717-a1c4-daaeee4f3b28&scope=openid%20email&state=5ZEbvVrVKBG //52.152.166.27/login/oauth2/code/shinyproxy&nonce=EhOFxVuVRksPOxd0hG-CKPDd2s78bhFIzSSC_PPU5-Q
エラーAADSTS50011を取得しています:リクエストで指定された応答URLが、アプリケーション用に構成された応答URLと一致しません: 'd1abf394-b312-4717-a1c4-daaeee4f3b28'。
これは、shinyproxy 2.4.0用の私のapplication.ymlです。shinyproxy2.3.1は、MicrosoftEdgeから機能しているようです。
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
nginxでリバースプロキシを作成し、単純な認証を使用して安全にログインすることができましたが、openidを使用しようとすると、コールバックプロトコルとしてhttpを使用するため、失敗します。
https://login.microsoftonline.com/9ac05e7d-e6a1-433a-9801-a60642903c2b/oauth2/authorize?response_type=code&client_id=d1abf394-b312-4717-a1c4-daaeee4f3b28&scope=openid%20email&state=5ZEbvVrVKBG //52.152.166.27/login/oauth2/code/shinyproxy&nonce=EhOFxVuVRksPOxd0hG-CKPDd2s78bhFIzSSC_PPU5-Q
エラーAADSTS50011を取得しています:リクエストで指定された応答URLが、アプリケーション用に構成された応答URLと一致しません: 'd1abf394-b312-4717-a1c4-daaeee4f3b28'。
2.4で私にとって同じエラー
こんにちは@ danielfm123 、 @ roberts2727なので、ShinyProxy 2.4では、次の設定は機能しなくなります。
server:
useForwardHeaders: true
代わりに、以下を使用する必要があります。
server:
forward-headers-strategy: native
これで問題が解決するかどうかを報告できますか?
問題は解決された! ありがとうございます。
はい、動作しますが、パッケージDTを強制終了します
ShinyProxy2.4次の設定
https://www.shinyproxy.io/security/でそれについて言及する価値があり
こんにちは@shosacoこれはすでに私たちの新しいウェブサイトに追加されています: https : //www.shinyproxy.io/documentation/security/#forward-headers 。 あなたが指しているURLは、私が今クリーンアップした古いWebサイトの残りです。
最も参考になるコメント
なんとか修正できました。
このコード
proxy:
外にある必要があります