Shinyproxy: рдХреЗрд╡рд▓ https (443) рдкрд░ рдЪрдордХрджрд╛рд░ рдкреНрд░реЙрдХреНрд╕реА рдЪрд▓рд╛рдПрдВ

рдХреЛ рдирд┐рд░реНрдорд┐рдд 21 рджрд┐рд╕ре░ 2018  ┬╖  25рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ  ┬╖  рд╕реНрд░реЛрдд: openanalytics/shinyproxy

рдирдорд╕реНрддреЗ,

рдХреЗрд╡рд▓ https рдкрд░ ShinyProxy рд╕реЗрдЯ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд┐рдпрд╛ рд╣реИред рдпрд╣ рдкреНрд░рд▓реЗрдЦрди рдХреЗ рдЕрдиреБрд╕рд╛рд░ рд╕рдВрднрд╡ рд▓рдЧрддрд╛ рд╣реИ - https://www.shinyproxy.io/security/#https -ssl-tls

рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдЬрдм рдХреЗрд╡рд▓ https рдЙрдкрд▓рдмреНрдз рд╣реЛ (рдЕрд░реНрдерд╛рдд nginx рдореЗрдВ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд┐рдП рдЧрдП http рд╕реЗ рдХреЛрдИ рд░реАрдбрд╛рдпрд░реЗрдХреНрдЯ рдирд╣реАрдВ), рддреЛ рдЖрдЧреЗ рдХреЗ рд╣реЗрдбрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП application.yml рдореЗрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдЬреЛрдбрд╝рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИ:
рд╕рд░реНрд╡рд░:
рдлреЙрд░рд╡рд░реНрдбрд╣реЗрдбрд░реНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ: рд╕рдЪ

рд╕рдорд╕реНрдпрд╛ рдпрд╣ рд╣реИ рдХрд┐ рдЬрдм рдХреЗрд╡рд▓ https, NGINX рдкреНрд░рд╡реЗрд╢ рдФрд░ OpenID рдХреЗ рд╕рд╛рде рд╕реЗрдЯ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ https рдпреЛрдЬрдирд╛ NGINX рдкреНрд░рд╡реЗрд╢ рд╕реЗ ShinyProxy рдХрдВрдЯреЗрдирд░ рддрдХ рдирд╣реАрдВ рдЬрд╛рддреА рд╣реИ, рдЬреЛ рдмрджрд▓реЗ рдореЗрдВ OpenId рдХреЗ рд╕рд╛рде рдХрдИ рд╕рдорд╕реНрдпрд╛рдУрдВ рдХрд╛ рдХрд╛рд░рдг рдмрдирддреА рд╣реИред рдЕрд░реНрдерд╛рддреН:

  • https рдкрд░ OpenID рдХреЗ рд▓рд┐рдП рд╢рд╛рдЗрдиреАрдкреНрд░реЙрдХреНрд╕реА рдЬреЗрдирд░реЗрдЯ рдХрд░рдиреЗ рд╡рд╛рд▓рд╛ рд░рд┐рдЯрд░реНрди URL http . рдХреЗ рд╕рд╛рде рдЬреЗрдирд░реЗрдЯ рд╣реЛрддрд╛ рд╣реИ

рдРрд╕рд╛ рд╣реЛрдиреЗ рдХрд╛ рдХрд╛рд░рдг рдпрд╣рд╛рдВ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдХреЛрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ ShinyProxy рдХреЗ рдХрд╛рд░рдг рд╣реИ - рд╕реНрдкреНрд░рд┐рдВрдЧ-рд╕рд┐рдХреНрдпреЛрд░рд┐рдЯреА DefaultOAuth2AuthorizationRequestResolver.java # L141

рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА

рдЗрд╕реЗ рдареАрдХ рдХрд░рдиреЗ рдореЗрдВ рдХрд╛рдордпрд╛рдм рд░рд╣реЗред
рдпрд╣ рдХреЛрдб

 server:
      useForwardHeaders: true

proxy: рдмрд╛рд╣рд░ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП

рд╕рднреА 25 рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

@garyallenkt рдХреНрдпрд╛ рдЖрдк рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдереЗ?
рдзрдиреНрдпрд╡рд╛рдж!

рдЗрд╕ рдореБрджреНрджреЗ рдкрд░ рдХреЛрдИ рдЕрдкрдбреЗрдЯ?

рдЗрд╕рдХрд╛ рд╕рдорд╛рдзрд╛рди рдирд┐рдХрд╛рд▓рдиреЗ рдореЗрдВ OpenAnalytics рдиреЗ рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рдХрд╛рдо рдХрд┐рдпрд╛ рд╣реИред

рдЖрдкрдХреЛ ShinyProxy (2.3.0) рдХрд╛ рдирд╡реАрдирддрдо рд╕рдВрд╕реНрдХрд░рдг рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП рдФрд░ рдпрд╣рд╛рдВ рдЕрдкрдбреЗрдЯ рдХрд┐рдП рдЧрдП рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реЛрдВ рдХрд╛ рдкрд╛рд▓рди рдХрд░реЗрдВ - https://www.shinyproxy.io/security/#https -ssl-tls

рд╢реБрднрдХрд╛рдордирд╛рдПрдВред

рд╣рд╛рдп @garyallenkt ,

рдЖрдкрдХреЗ рддреНрд╡рд░рд┐рдд рдЬрд╡рд╛рдм рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рджред рдореИрдВрдиреЗ рдирд╡реАрдирддрдо рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рд╕рд╛рде рдкреНрд░рдпрд╛рд╕ рдХрд┐рдпрд╛ рд▓реЗрдХрд┐рди рд╕рдорд╕реНрдпрд╛ рдореЗрд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ рдмрдиреА рд╣реБрдИ рд╣реИред рдореИрдВ рдкреВрд░реЗ рдЪрдордХрджрд╛рд░ рдкреНрд░реЙрдХреНрд╕реА рдХреЛ рдЗрдлреНрд░реЗрдо рдореЗрдВ рдПрдореНрдмреЗрдб рдХрд░ рд░рд╣рд╛ рд╣реВрдВред рд▓реЙрдЧрд┐рди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╕рд░реНрд╡рд░ HTTPS рдХрдиреЗрдХреНрд╢рди рдХреЛ HTTP рдХрдиреЗрдХреНрд╢рди рдкрд░ рдкреБрдирд░реНрдирд┐рд░реНрджреЗрд╢рд┐рдд рдХрд░рддрд╛ рд╣реИ, рдЬрд┐рд╕рдХреА рдЕрдзрд┐рдХрд╛рдВрд╢ рдмреНрд░рд╛рдЙрдЬрд╝рд░реЛрдВ рджреНрд╡рд╛рд░рд╛ рдЕрдиреБрдорддрд┐ рдирд╣реАрдВ рд╣реИред рдХреНрдпрд╛ рдЖрдк рдЬрд╛рдирддреЗ рд╣реИрдВ рдХрд┐ рдореИрдВ рдЗрд╕реЗ рдХреИрд╕реЗ рдареАрдХ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ?

рд╕рд╛рджрд░

@fmichielssen

рдореИрдВ рдЯреЗрд▓реАрдереЙрди рдХрд┐рдбреНрд╕ рд░реЗрдкреЛ рд╕реЗ рдПрдХ рдХрд╛рдВрдЯрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ рдФрд░ рд╡реЗ 2.3.0 рдХрд╛ рднреА рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рдореИрдВрдиреЗ рдУрдкрдирдПрдирд╛рд▓рд┐рдЯрд┐рдХреНрд╕ рдХреА рдЫрд╡рд┐ рднреА рдЦреАрдВрдЪреА рд╣реИред рдЖрдкрдХреЗ рд╕рдВрджрд░реНрдн рдХреЗ рд▓рд┐рдП, рдпрд╣рд╛рдБ рдореЗрд░реА config.

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 рдЕрдВрджрд░ рдирд╣реАрдВ рд╣реИ

рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ рдореБрдЭреЗ рдЪрдордХрджрд╛рд░ рдкреНрд░реЙрдХреНрд╕реА 2.3.1 рдХреЗ рд╕рд╛рде рдПрдХ рд╣реА рд╕рдорд╕реНрдпрд╛ рд╣реЛ рд░рд╣реА рд╣реИ

рдореЗрд░реЗ рдкрд╛рд╕ application.yml рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдкреНрд░реЙрдХреНрд╕реА рдмреНрд▓реЙрдХ рдХреЗ рдмрд╛рд╣рд░ рдпрд╣ рдмреНрд▓реЙрдХ рд╣реИ

рд╕рд░реНрд╡рд░:
рдлреЙрд░рд╡рд░реНрдбрд╣реЗрдбрд░реНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ: рд╕рдЪ

рдФрд░ рдореЗрд░реЗ рдкрд╛рд╕ Nginx рдкреНрд░реЙрдХреНрд╕реА рд╣реИ, рдЬреИрд╕рд╛ рдХрд┐ рдкреНрд░рд▓реЗрдЦрди рдореЗрдВ рд╡рд░реНрдгрд┐рдд рд╣реИред рдореИрдВ рднреА (рдпрд╣ рдкрд░реАрдХреНрд╖рдг рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рдХреНрдпрд╛ рдореИрдВрдиреЗ рдЕрдкрд╛рдЪреЗ рд╕рд░реНрд╡рд░ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рдЧреВрдВрдЧрд╛ 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 рдПрдХ рдирдЬрд╝рд░

рдкреЛрд░реНрдЯ рдХреЛ рдмрджрд▓рдиреЗ рдФрд░ рд╕рд░реНрд╡рд░рдлрд╝реЙрд░рд╡рд░реНрдб рд╣реЗрдбрд░ рд▓рд╛рдЗрди рдЬреЛрдбрд╝рдиреЗ рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдореИрдВрдиреЗ рд╕рдм рдХреБрдЫ рдареАрдХ рдЙрд╕реА рддрд░рд╣ рд░рдЦрдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХреА рд╣реИ рдЬреИрд╕реЗ рдЗрд╕реЗ рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдореИрдВрдиреЗ рдЗрд╕реЗ рдЪрдордХрджрд╛рд░ рдкреНрд░реЙрдХреНрд╕реА 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

рдореИрдВрдиреЗ рдЗрд╕рдХреЗ рдмрдЬрд╛рдп рд╡реЗрдмрд╕рд░реНрд╡рд░ рдХреЗ рд░реВрдк рдореЗрдВ рдЕрдкрд╛рдЪреЗ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдкрд░реАрдХреНрд╖рдг рдХрд┐рдпрд╛, рдФрд░ рдореБрдЭреЗ рдПрдХ рд╣реА рд╕рдорд╕реНрдпрд╛ рд╣реИред рдореЗрд░реЗ рджреЛ рд╡рд░реНрддрдорд╛рди рд╕рд┐рджреНрдзрд╛рдВрдд рд╣реИрдВ рдХрд┐ рдпрд╛ рддреЛ рдореЗрд░реЗ application.yml рд╕реЗрдЯ рдЕрдк рдореЗрдВ рдХреБрдЫ рдЧрдбрд╝рдмрдбрд╝ рд╣реИ, рдпрд╛ рдРрд╕рд╛ рдЗрд╕рд▓рд┐рдП рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдореИрдВ рдкреНрд░реЙрдХреНрд╕реА/рд░рд┐рд╡рд░реНрд╕ рдкреНрд░реЙрдХреНрд╕реА рдХреЛ рдирд╣реАрдВ рд╕рдордЭрддрд╛ рдХрд┐ рдореЗрд░реЗ рдкреНрд░реЙрдХреНрд╕реА рдмреНрд▓реЙрдХ рдореЗрдВ рдХреБрдЫ http рдкрд░ рд░реАрдбрд╛рдпрд░реЗрдХреНрдЯ рдХреА рдЕрдиреБрдорддрд┐ рджреЗ рд░рд╣рд╛ рд╣реИред

@ рдХреНрд▓реЗрдпрд░-рдХреЗрд▓реА рдЖрдкрдХреА рд╕рдЯреАрдХ рддреНрд░реБрдЯрд┐ рдХреНрдпрд╛ рд╣реИ?

@ greenspray9 рдореБрдЭреЗ рдХреЛрдИ рддреНрд░реБрдЯрд┐ рдирд╣реАрдВ рдорд┐рд▓ рд░рд╣реА рд╣реИ! рдпрд╣ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ рддрд╛рдХрд┐ рдЬрдм рдореИрдВ рдЕрдкрдиреА рд╡реЗрдмрд╕рд╛рдЗрдЯ рдкрд░ рдЬрд╛рддрд╛ рд╣реВрдВ рддреЛ рдореИрдВ рдкреГрд╖реНрда рдореЗрдВ рдЪрдордХрджрд╛рд░ рдкреНрд░реЙрдХреНрд╕реА рд▓реЙрдЧ рджреЗрдЦ рд╕рдХрддрд╛ рд╣реВрдВ рдФрд░ рдЗрд╕реЗ HTTPS рдкрд░ рдкрд░реЛрд╕рд╛ рдЬрд╛рддрд╛ рд╣реИ (рдпрд╣ рд╡рд╛рдВрдЫрд┐рдд рд╡реНрдпрд╡рд╣рд╛рд░ рд╣реИ)ред рд╕рдорд╕реНрдпрд╛ рдпрд╣ рд╣реИ рдХрд┐ рдЬрдм рдореИрдВ рд▓реЙрдЧ рдЗрди рдХрд░рддрд╛ рд╣реВрдВ (рдЕрднреА рдХреЗ рд▓рд┐рдП рд╕рд░рд▓ рдкреНрд░рдорд╛рдгреАрдХрд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ) рдкреГрд╖реНрда HTTP рдкрд░ рдкрд░реЛрд╕рд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИ (HTTPS рдирд╣реАрдВ- рдпрд╣ рд╕рдорд╕реНрдпрд╛ рд╣реИ!)

@ ckelley-ct рдХреНрд╖рдорд╛ рдХрд░реЗрдВ рдореБрдЭреЗ рдЖрдкрдХреЗ рдЗрдЪреНрдЫрд┐рдд рд▓реЙрдЧрд┐рди рдХреЗ рдкреНрд░рдХрд╛рд░ рдХрд╛ рдХреЛрдИ рдЕрдиреБрднрд╡ рдирд╣реАрдВ рд╣реИред рд╢рд╛рдпрдж рдХрд┐рд╕реА рддрд░рд╣ рдХрд╛ рд░реАрдбрд╛рдпрд░реЗрдХреНрдЯ рд╣реЛ рд░рд╣рд╛ рд╣реИ?

рдореБрдЭреЗ рдПрдХ рд╣реА рд╕рдорд╕реНрдпрд╛ рд╣реИ, рдХреНрдпрд╛ рдЖрдкрдХреЛ рдХреЛрдИ рд╕рдорд╛рдзрд╛рди рдорд┐рд▓рд╛?

@ HEPBO3AH рд╣рд╛рдБ рдореИрдВрдиреЗ рдХрд┐рдпрд╛ - рдореЗрд░реЗ рд▓рд┐рдП рд╕рдорд╕реНрдпрд╛ рдЕрд╕реБрд░рдХреНрд╖рд┐рдд рдЫрд╡рд┐ рдХреЗ рд╕рд╛рде рдереА (рд▓рд╛рдЗрди рд▓реЛрдЧреЛ-рдпреВрдЖрд░рдПрд▓: http://www.openanalytics.eu/sites/www.openanalytics.eu/themes/oa/logo.png рдореЗрдВ рдЙрджрд╛рд╣рд░рдг рдХреЛрдб рдКрдкрд░)ред рдпрджрд┐ рдЖрдк рдЗрд╕реЗ https рдкрд░ рдкреНрд░рджрд░реНрд╢рд┐рдд рдЫрд╡рд┐ рдореЗрдВ рдмрджрд▓рддреЗ рд╣реИрдВ рдпрд╛ рдЗрд╕реЗ рд╣рдЯрд╛рддреЗ рд╣реИрдВ, рддреЛ рд╕рдорд╕реНрдпрд╛ рд╣рд▓ рд╣реЛ рдЬрд╛рддреА рд╣реИред

@ HEPBO3AH @ ckelley-ct FYI рдХрд░реЗрдВ, рд╣рдордиреЗ рдЫрд╡рд┐ рдХреЛ https://www.openanalytics.eu/shinyproxy/logo.png рдкрд░ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░ рджрд┐рдпрд╛ рд╣реИ

рдореИрдВ nginx рдХреЗ рд╕рд╛рде рд░рд┐рд╡рд░реНрд╕ рдкреНрд░реЙрдХреНрд╕реА рдмрдирд╛рдиреЗ рдФрд░ рд╕рд░рд▓ рдкреНрд░рдорд╛рдгреАрдХрд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕реБрд░рдХреНрд╖рд┐рдд рд░реВрдк рд╕реЗ рд▓реЙрдЧрд┐рди рдХрд░рдиреЗ рдореЗрдВ рдХрд╛рдордпрд╛рдм рд░рд╣рд╛, рд▓реЗрдХрд┐рди рдПрдХ рдмрд╛рд░ рдЬрдм рдореИрдВ рдУрдкрдирд┐рдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рддрд╛ рд╣реВрдВ рддреЛ рдпрд╣ рд╡рд┐рдлрд▓ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдХреЙрд▓рдмреИрдХ рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдХреЗ рд░реВрдк рдореЗрдВ http рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ:

https://login.microsoftonline.com/9ac05e7d-e6a1-433a-9801-a60642903c2b/oauth2/authorize?response_type=code&client_id=d1abf394-b312-4717-a1c4-daaeee4f3b28&scope=SNSR9&o //52.152.166.27/login/oauth2/code/shinyproxy&nonce=EhOFxVuVRksPOxd0hG-CKPDd2s78bhFIzSSC_PPU5-Q

рддреНрд░реБрдЯрд┐ рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ AADSTS50011: рдЕрдиреБрд░реЛрдз рдореЗрдВ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдЙрддреНрддрд░ URL, рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рд▓рд┐рдП рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд┐рдП рдЧрдП рдЙрддреНрддрд░ URL рд╕реЗ рдореЗрд▓ рдирд╣реАрдВ рдЦрд╛рддрд╛: 'd1abf394-b312-4717-a1c4-daaeee4f3b28'ред

рдпрд╣ рдореЗрд░рд╛ application.yml рд╣реИ рдЪрдордХрджрд╛рд░ рдкреНрд░реЙрдХреНрд╕реА реи.рек.реж рдХреЗ рд▓рд┐рдП, рдЪрдордХрджрд╛рд░ рдкреНрд░реЙрдХреНрд╕реА реи.рей.рез рдорд╛рдЗрдХреНрд░реЛрд╕реЙрдлреНрдЯ рдПрдЬ рд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рдкреНрд░рддреАрдд рд╣реЛрддрд╛ рд╣реИ

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 рдХреЗ рд╕рд╛рде рд░рд┐рд╡рд░реНрд╕ рдкреНрд░реЙрдХреНрд╕реА рдмрдирд╛рдиреЗ рдФрд░ рд╕рд░рд▓ рдкреНрд░рдорд╛рдгреАрдХрд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕реБрд░рдХреНрд╖рд┐рдд рд░реВрдк рд╕реЗ рд▓реЙрдЧрд┐рди рдХрд░рдиреЗ рдореЗрдВ рдХрд╛рдордпрд╛рдм рд░рд╣рд╛, рд▓реЗрдХрд┐рди рдПрдХ рдмрд╛рд░ рдЬрдм рдореИрдВ рдУрдкрдирд┐рдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рддрд╛ рд╣реВрдВ рддреЛ рдпрд╣ рд╡рд┐рдлрд▓ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдХреЙрд▓рдмреИрдХ рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдХреЗ рд░реВрдк рдореЗрдВ http рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ:

https://login.microsoftonline.com/9ac05e7d-e6a1-433a-9801-a60642903c2b/oauth2/authorize?response_type=code&client_id=d1abf394-b312-4717-a1c4-daaeee4f3b28&scope=SNSR9&o //52.152.166.27/login/oauth2/code/shinyproxy&nonce=EhOFxVuVRksPOxd0hG-CKPDd2s78bhFIzSSC_PPU5-Q

рддреНрд░реБрдЯрд┐ рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ AADSTS50011: рдЕрдиреБрд░реЛрдз рдореЗрдВ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдЙрддреНрддрд░ URL, рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рд▓рд┐рдП рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд┐рдП рдЧрдП рдЙрддреНрддрд░ URL рд╕реЗ рдореЗрд▓ рдирд╣реАрдВ рдЦрд╛рддрд╛: 'd1abf394-b312-4717-a1c4-daaeee4f3b28'ред

рдореЗрд░реЗ рд▓рд┐рдП 2.4 with рдХреЗ рд╕рд╛рде рдПрдХ рд╣реА рддреНрд░реБрдЯрд┐

рд╣рд╛рдп @ danielfm123 , @ roberts2727 рддреЛ ShinyProxy 2.4 рдХреЗ рд╕рд╛рде рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХреЙрдиреНрдлрд┐рдЧрд░реЗрд╢рди рдЕрдм рдХрд╛рдо рдирд╣реАрдВ рдХрд░реЗрдЧрд╛:

server:
    useForwardHeaders: true

рдЗрд╕рдХреЗ рдмрдЬрд╛рдп рдЖрдкрдХреЛ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╣реЛрдЧрд╛:

server:
  forward-headers-strategy: native

рдХреНрдпрд╛ рдЖрдк рд╡рд╛рдкрд╕ рд░рд┐рдкреЛрд░реНрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдХреНрдпрд╛ рдЗрд╕рд╕реЗ рдЖрдкрдХреА рд╕рдорд╕реНрдпрд╛ рд╣рд▓ рд╣реЛ рдЧрдИ рд╣реИ?

рдорд╕рд▓рд╛ рд╣рд▓ рд╣реЛ рдЧрдпрд╛! рд╢реБрдХреНрд░рд┐рдпрд╛ рдЬрдирд╛рдмред

рд╣рд╛рдБ, рдпрд╣ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ рд▓реЗрдХрд┐рди рдкреИрдХреЗрдЬ рдХреЛ рдорд╛рд░рддрд╛ рд╣реИ DT

рд╢рд╛рдЗрдиреАрдкреНрд░реЙрдХреНрд╕реА реи.рек рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдЬрд╛рдирдХрд╛рд░реА

рдХреНрдпрд╛ рдпрд╣ рдЙрд▓реНрд▓реЗрдЦрдиреАрдп рд╣реЛрдЧрд╛ рдХрд┐ https://www.shinyproxy.io/security/ рдкрд░

рдирдорд╕реНрддреЗ @shosaco рдпрд╣ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд╣рдорд╛рд░реА рдирдИ рд╡реЗрдмрд╕рд╛рдЗрдЯ рдореЗрдВ рдЬреЛрдбрд╝рд╛ рдЧрдпрд╛ рд╣реИ: https://www.shinyproxy.io/documentation/security/#forward -headersред рдЖрдк рдЬрд┐рд╕ URL рдХреА рдУрд░ рдЗрд╢рд╛рд░рд╛ рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рд╡рд╣ рдкреБрд░рд╛рдиреА рд╡реЗрдмрд╕рд╛рдЗрдЯ рдХрд╛ рд╢реЗрд╖ рднрд╛рдЧ рд╣реИ, рдЬрд┐рд╕реЗ рдореИрдВрдиреЗ рдЕрдм рд╕рд╛рдлрд╝ рдХрд░ рджрд┐рдпрд╛ рд╣реИред

рдХреНрдпрд╛ рдпрд╣ рдкреГрд╖реНрда рдЙрдкрдпреЛрдЧреА рдерд╛?
0 / 5 - 0 рд░реЗрдЯрд┐рдВрдЧреНрд╕

рд╕рдВрдмрдВрдзрд┐рдд рдореБрджреНрджреЛрдВ

jat255 picture jat255  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

shrektan picture shrektan  ┬╖  9рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

thomas-chauvet picture thomas-chauvet  ┬╖  5рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

dylancis picture dylancis  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

Bertusian picture Bertusian  ┬╖  5рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ