Shinyproxy: https(443)์—์„œ๋งŒ shinyproxy ์‹คํ–‰

์— ๋งŒ๋“  2018๋…„ 12์›” 21์ผ  ยท  25์ฝ”๋ฉ˜ํŠธ  ยท  ์ถœ์ฒ˜: openanalytics/shinyproxy

์•ˆ๋…•,

https์—์„œ๋งŒ ShinyProxy๋ฅผ ์„ค์ •ํ•˜๋ ค๊ณ  ํ–ˆ์Šต๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ ๋ฌธ์„œ์— ๋”ฐ๋ผ ๊ฐ€๋Šฅํ•œ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค - https://www.shinyproxy.io/security/#https -ssl-tls

https๋งŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒฝ์šฐ(์ฆ‰, nginx์— ๊ตฌ์„ฑ๋œ http์—์„œ ๋ฆฌ๋””๋ ‰์…˜์ด ์—†๋Š” ๊ฒฝ์šฐ) ์ •๋ฐฉํ–ฅ ํ—ค๋”๋ฅผ ์‚ฌ์šฉํ•˜๋ ค๋ฉด application.yml์— ๋‹ค์Œ์„ ์ถ”๊ฐ€ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
์„ฌ๊ธฐ๋Š” ์‚ฌ๋žŒ:
useForwardHeaders: ์ฐธ

๋ฌธ์ œ๋Š” https ์ „์šฉ, NGINX ์ˆ˜์‹  ๋ฐ OpenID๋กœ ์„ค์ •ํ•  ๋•Œ https ์ฒด๊ณ„๊ฐ€ NGINX ์ˆ˜์‹ ์—์„œ ShinyProxy ์ปจํ…Œ์ด๋„ˆ๋กœ ์ „๋‹ฌ๋˜์ง€ ์•Š์•„ ์ฐจ๋ก€๋กœ OpenId์— ์—ฌ๋Ÿฌ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ฆ‰:

  • Shinyproxy๊ฐ€ https์˜ OpenID์— ๋Œ€ํ•ด ์ƒ์„ฑํ•˜๋Š” ๋ฐ˜ํ™˜ URL์€ http๋กœ ์ƒ์„ฑ๋ฉ๋‹ˆ๋‹ค.

์ด๊ฒƒ์ด ๋ฐœ์ƒํ•˜๋Š” ์ด์œ ๋Š” ์—ฌ๊ธฐ์—์„œ ๊ธฐ๋ณธ ์ฝ”๋“œ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ShinyProxy ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค - spring-security DefaultOAuth2AuthorizationRequestResolver.java # L141

๊ฐ€์žฅ ์œ ์šฉํ•œ ๋Œ“๊ธ€

ํ•ด๊ฒฐํ–ˆ์Šต๋‹ˆ๋‹ค.
์ด ์ฝ”๋“œ

 server:
      useForwardHeaders: true

proxy: ๋ฐ–์— ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

๋ชจ๋“  25 ๋Œ“๊ธ€

@garyallenkt ์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ์—ˆ์Šต๋‹ˆ๊นŒ?
๊ฐ์‚ฌ!

์ด ๋ฌธ์ œ์— ๋Œ€ํ•œ ์—…๋ฐ์ดํŠธ๊ฐ€ ์žˆ์Šต๋‹ˆ๊นŒ?

OpenAnalytics๋Š” ์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๋Š” ๋ฐ ํฐ ์—ญํ• ์„ ํ–ˆ์Šต๋‹ˆ๋‹ค.

์ตœ์‹  ๋ฒ„์ „์˜ ShinyProxy(2.3.0)๋ฅผ ๋‹ค์šด๋กœ๋“œํ•˜๊ณ  ์—ฌ๊ธฐ์—์„œ ์—…๋ฐ์ดํŠธ๋œ ์„ค๋ช…์„œ๋ฅผ ๋”ฐ๋ฅผ ์ˆ˜ ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. - https://www.shinyproxy.io/security/#https -ssl-tls

ํ–‰์šด์„ ๋น•๋‹ˆ๋‹ค.

์•ˆ๋…•ํ•˜์„ธ์š” @garyallenkt ๋‹˜ ,

๊ท€ํ•˜์˜ ๋น ๋ฅธ ์‘๋‹ต์— ๊ฐ์‚ฌ๋“œ๋ฆฝ๋‹ˆ๋‹ค. ์ตœ์‹  ๋ฒ„์ „์œผ๋กœ ์‹œ๋„ํ–ˆ์ง€๋งŒ ๋‚ด ๊ฒฝ์šฐ์—๋Š” ๋ฌธ์ œ๊ฐ€ ์ง€์†๋ฉ๋‹ˆ๋‹ค. Iframe์— ์ „์ฒด shinyproxy๋ฅผ ํฌํ•จํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๋กœ๊ทธ์ธ์„ ์œ„ํ•ด ์„œ๋ฒ„๋Š” HTTPS ์—ฐ๊ฒฐ์„ ๋Œ€๋ถ€๋ถ„์˜ ๋ธŒ๋ผ์šฐ์ €์—์„œ ํ—ˆ์šฉํ•˜์ง€ ์•Š๋Š” HTTP ์—ฐ๊ฒฐ๋กœ ๋ฆฌ๋””๋ ‰์…˜ํ•ฉ๋‹ˆ๋‹ค. ์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์•Œ๊ณ  ์žˆ์Šต๋‹ˆ๊นŒ?

๋ฌธ์•ˆ ์ธ์‚ฌ

@fmichielssen

์ €๋Š” 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:

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 ๋‚ด๋ถ€๊ฐ€ ์•„๋‹™๋‹ˆ๋‹ค.

๋ถˆํ–‰ํžˆ๋„ ์ €๋Š” 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์˜ ๋ชจ์Šต์ž…๋‹ˆ๋‹ค.

ํฌํŠธ๋ฅผ ๋ณ€๊ฒฝํ•˜๊ณ  serverforward ํ—ค๋” ํ–‰์„ ์ถ”๊ฐ€ํ•˜๋Š” ๊ฒƒ ์™ธ์—๋„ ๋ชจ๋“  ๊ฒƒ์„ ์„ค์น˜๋œ ๊ทธ๋Œ€๋กœ ์œ ์ง€ํ•˜๋ ค๊ณ  ๋…ธ๋ ฅํ–ˆ์Šต๋‹ˆ๋‹ค. ์ด ์Šค๋ ˆ๋“œ์˜ ๋ชจ๋“  ์‚ฌ๋žŒ์—๊ฒŒ ์ž‘๋™ํ•˜๋Š” ๊ฒƒ์ฒ˜๋Ÿผ ๋ณด์˜€์ง€๋งŒ ๋™์ผํ•œ ๋ฌธ์ œ๊ฐ€ ์žˆ์—ˆ๊ธฐ ๋•Œ๋ฌธ์— Shiny Proxy 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๋กœ ๋ฆฌ๋””๋ ‰์…˜์„ ํ—ˆ์šฉํ•˜๊ณ  ์žˆ๋‹ค๋Š” ํ”„๋ก์‹œ/์—ญ ํ”„๋ก์‹œ๋ฅผ ์ดํ•ดํ•˜์ง€ ๋ชปํ•˜๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.

@Claire-Kelley ์ •ํ™•ํ•œ ์˜ค๋ฅ˜๋Š” ๋ฌด์—‡์ž…๋‹ˆ๊นŒ?

@greenspray9 ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค! ๋‚ด ์›น ์‚ฌ์ดํŠธ์— ๊ฐˆ ๋•Œ ๋ฐ˜์ง์ด๋Š” ํ”„๋ก์‹œ ๋กœ๊ทธ์ธ ํŽ˜์ด์ง€๋ฅผ ๋ณผ ์ˆ˜ ์žˆ๊ณ  HTTPS๋ฅผ ํ†ตํ•ด ์ œ๊ณต๋˜๋„๋ก ์™„๋ฒฝํ•˜๊ฒŒ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค(์ด๊ฒƒ์ด ์›ํ•˜๋Š” ๋™์ž‘์ž…๋‹ˆ๋‹ค). ๋ฌธ์ œ๋Š” ๋‚ด๊ฐ€ ๋กœ๊ทธ์ธํ•  ๋•Œ(์ง€๊ธˆ์€ ๋‹จ์ˆœ ์ธ์ฆ์„ ์‚ฌ์šฉํ•˜์—ฌ) ํŽ˜์ด์ง€๊ฐ€ HTTP๋ฅผ ํ†ตํ•ด ์ œ๊ณต๋˜๊ธฐ ์‹œ์ž‘ํ•œ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค(HTTPS๊ฐ€ ์•„๋‹ˆ๋ผ ์ด๊ฒƒ์ด ๋ฌธ์ œ์ž…๋‹ˆ๋‹ค! )

@ckelley-ct ์ฃ„์†กํ•ฉ๋‹ˆ๋‹ค ์›ํ•˜๋Š” ๋กœ๊ทธ์ธ ์œ ํ˜•์— ๋Œ€ํ•œ ๊ฒฝํ—˜์ด ์—†์Šต๋‹ˆ๋‹ค. ์–ด๋–ค ์ข…๋ฅ˜์˜ ๋ฆฌ๋””๋ ‰์…˜์ด ๋ฐœ์ƒํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๊นŒ?

์ €๋„ ๊ฐ™์€ ๋ฌธ์ œ์ธ๋ฐ ํ•ด๊ฒฐ์ฑ… ์ฐพ์œผ์…จ๋‚˜์š”?

@HEPBO3AH ๊ทธ๋ ‡์Šต๋‹ˆ๋‹ค. ์ €์—๊ฒŒ ๋ฌธ์ œ๋Š” ์•ˆ์ „ํ•˜์ง€ ์•Š์€ ์ด๋ฏธ์ง€์— ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค(

@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'.

์ด๊ฒƒ์€ ๋‚ด application.yml์ž…๋‹ˆ๋‹ค. Shinyproxy 2.4.0, Shiny Proxy 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 ๋“ฑ๊ธ‰