أهلا،
لقد حاولت إعداد ShinyProxy على https فقط. يبدو هذا ممكنًا وفقًا للوثائق - https://www.shinyproxy.io/security/#https -ssl-tls
لاحظ أنه عندما يكون https فقط متاحًا (على سبيل المثال ، لا توجد عمليات إعادة توجيه من http تم تكوينها في nginx) ، يلزم إضافة ما يلي إلى application.yml من أجل استخدام رؤوس التوجيه:
الخادم:
useForwardHeaders: صحيح
تكمن المشكلة في أنه عند الإعداد باستخدام 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 الذي لا تسمح به غالبية المتصفحات. هل تعرف كيف يمكنني إصلاح هذا؟
يعتبر
تضمين التغريدة
أنا أستخدم شوكة من Telethon kids repo وهم يستخدمون 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:
التطبيق. 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;
}
}
}
أي تحديث محتمل على هذا؟ تضمين التغريدة
تمكنت من إصلاحه.
هذا الرمز
server:
useForwardHeaders: true
يجب أن يكون خارج proxy:
server
هو بالفعل كتلة من المستوى الأعلى وليس داخل proxy
لسوء الحظ أواجه نفس المشكلة مع shinyproxy 2.3.1
لدي هذه الكتلة خارج كتلة الوكيل في ملف application.yml
الخادم:
useForwardHeaders: صحيح
ولدي Nginx تم إعداده بشكل دقيق كما هو موضح في الوثائق. أنا أيضًا (لاختبار ما إذا كنت قد ارتكبت للتو بعض الأخطاء ngnix الغبية ، قمت بإعداد خادم Apache وكان لدي نفس المشكلة بالضبط).
كتل تكوين 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:
بصرف النظر عن تغيير المنفذ وإضافة سطر رأس الخادم إلى الأمام ، فقد حاولت الاحتفاظ بكل شيء تمامًا كما تم تثبيته. حتى أنني اختبرت هذا باستخدام الوكيل اللامع 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 كخادم ويب بدلاً من ذلك ، ولدي نفس المشكلة. نظريتان الحاليتان هما أنه إما أن هناك خطأ ما في إعداد application.yml الخاص بي ، أو لأنني لا أفهم الوكيل / الوكيل العكسي أن شيئًا ما في كتلة الوكيل الخاص بي يسمح بإعادة التوجيه إلى http.
@ كلير كيلي ما هو خطأك بالضبط؟
@ greenspray9 أنا لا أتلقى خطأ! إنه يعمل بشكل مثالي بحيث عندما أذهب إلى موقع الويب الخاص بي ، يمكنني رؤية صفحة تسجيل الدخول للوكيل اللامع ويتم تقديمها عبر HTTPS (هذا هو السلوك المطلوب). تكمن المشكلة في أنه عندما أقوم بتسجيل الدخول (باستخدام مصادقة بسيطة في الوقت الحالي) ، يبدأ تقديم الصفحة عبر HTTP (وليس HTTPS- هذه هي المشكلة!)
@ ckelley-ct آسف ليس لدي خبرة في نوع تسجيل الدخول الذي تريده. ربما يحدث نوع من إعادة التوجيه؟
لدي نفس المشكلة ، هل وجدت الحل؟
@ HEPBO3AH نعم فعلت - بالنسبة لي كانت المشكلة في الصورة غير الآمنة (عنوان url لشعار السطر: http://www.openanalytics.eu/sites/www.openanalytics.eu/themes/oa/logo.png في رمز المثال أعلاه). إذا غيرت ذلك إلى صورة معروضة عبر https أو أزلتها ، فسيتم حل المشكلة.
@ 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=5ZEbvVrVKBGpwId02I91SNRN-oPSbqkSR9oOlj7PRRQ٪3D&redirect_uri=http : //52.152.166.27/login/oauth2/code/shinyproxy&nonce=EhOFxVuVRksPOxd0hG-CKPDd2s78bhFIzSSC_PPU5-Q
الحصول على خطأ AADSTS50011: عنوان URL للرد المحدد في الطلب لا يتطابق مع عناوين URL للرد التي تم تكوينها للتطبيق: 'd1abf394-b312-4717-a1c4-daaeee4f3b28'.
هذا هو تطبيقي.yml لـ shinyproxy 2.4.0 ، يبدو أن الوكيل اللامع 2.3.1 يعمل من 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
تمكنت من إنشاء الوكيل العكسي باستخدام 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=5ZEbvVrVKBGpwId02I91SNRN-oPSbqkSR9oOlj7PRRQ٪3D&redirect_uri=http : //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
ShinyProxy 2.4 أسيوط التالية
هل يجدر ذكر ذلك على https://www.shinyproxy.io/security/؟
مرحبًا shosaco ، تمت إضافة هذا بالفعل إلى موقعنا الجديد: https://www.shinyproxy.io/documentation/security/#forward -headers. عنوان URL الذي تشير إليه هو الجزء المتبقي من موقع الويب القديم ، والذي قمت بتنظيفه الآن.
التعليق الأكثر فائدة
تمكنت من إصلاحه.
هذا الرمز
يجب أن يكون خارج
proxy: