Shinyproxy: قم بتشغيل shinyproxy على https (443) فقط

تم إنشاؤها على ٢١ ديسمبر ٢٠١٨  ·  25تعليقات  ·  مصدر: openanalytics/shinyproxy

أهلا،

لقد حاولت إعداد ShinyProxy على https فقط. يبدو هذا ممكنًا وفقًا للوثائق - https://www.shinyproxy.io/security/#https -ssl-tls

لاحظ أنه عندما يكون https فقط متاحًا (على سبيل المثال ، لا توجد عمليات إعادة توجيه من http تم تكوينها في nginx) ، يلزم إضافة ما يلي إلى application.yml من أجل استخدام رؤوس التوجيه:
الخادم:
useForwardHeaders: صحيح

تكمن المشكلة في أنه عند الإعداد باستخدام https فقط وإدخال NGINX و OpenID ، لا يتم تمرير مخطط https من دخول NGINX إلى حاوية ShinyProxy مما يؤدي بدوره إلى حدوث عدد من المشكلات مع OpenId. يسمى:

  • يتم إنشاء عنوان URL للإرجاع الذي ينشئه shinyproxy لـ OpenID على https باستخدام http

سبب حدوث ذلك يرجع إلى ShinyProxy باستخدام الرموز الافتراضية هنا - spring-security DefaultOAuth2AuthorizationRequestResolver.java # L141

bug

التعليق الأكثر فائدة

تمكنت من إصلاحه.
هذا الرمز

 server:
      useForwardHeaders: true

يجب أن يكون خارج proxy:

ال 25 كومينتر

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 الذي تشير إليه هو الجزء المتبقي من موقع الويب القديم ، والذي قمت بتنظيفه الآن.

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