带密钥斗篷的Shinyproxy重定向了太多次

问题描述

我正在尝试获取使用keycloak的Shinyproxy的基本示例。这是我的Dockerfile

FROM openjdk:11-jre

RUN mkdir -p /opt/shinyproxy/
RUN wget https://www.shinyproxy.io/downloads/shinyproxy-2.3.1.jar -O /opt/shinyproxy/shinyproxy.jar
copY application.yml /opt/shinyproxy/application.yml

workdir /opt/shinyproxy/
CMD ["java","-jar","/opt/shinyproxy/shinyproxy.jar"]

这是我的docker-compose.yml

version: "3.7"

services:
  MysqL:
      image: MysqL:5.7
      volumes:
        - MysqLdata:/var/lib/MysqL
      environment:
        MysqL_ROOT_PASSWORD: root
        MysqL_DATABASE: keycloak
        MysqL_USER: keycloak
        MysqL_PASSWORD: password
  keycloak:
      image: quay.io/keycloak/keycloak:latest
      environment:
        DB_vendOR: MysqL
        DB_ADDR: MysqL
        DB_DATABASE: keycloak
        DB_USER: keycloak
        DB_PASSWORD: password
        KEYCLOAK_USER: admin
        KEYCLOAK_PASSWORD: Pa55w0rd
        PROXY_ADDRESS_FORWARDING: 'true'
      ports:
        - 8010:8080
      #networks:
      #  - shinyproxy-net
      depends_on:
        - MysqL
  shinyproxy:
    build: .
    image: shinyproxy
    ports:
      - '8020:8080'
    networks:
      - shinyproxy-net
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock
networks:
  shinyproxy-net:
    external: true
volumes:
  MysqLdata:
      driver: local

这是我的application.yml

proxy:
  port: 8080
  authentication: keycloak
  useForwardHeaders: true  # not sure if necessary or not
  admin-groups: admins
  keycloak:
    realm: shinyproxy                                                     
    auth-server-url: http://localhost:8010/auth
    resource: shinyproxy                                                  
    credentials-secret: aa205d81-ae00-4b59-bca6-4c41074c633c
  docker:
      internal-networking: true
  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
    container-network: shinyproxy-net
  - id: 06_tabsets
    container-cmd: ["R","shinyproxy::run_06_tabsets()"]
    container-image: openanalytics/shinyproxy-demo
    container-network: shinyproxy-net
logging:
  file:
    shinyproxy.log

当我转到http://localhost:8020/并向在http://localhost:8010/中创建的用户进行身份验证时,会收到重定向次数过多错误

我在做什么错了?

解决方法

我有同样的问题,我已经调查了很多......我已经注意到“重定向太多次”背后的错误是什么

ERROR 1 --- [  XNIO-1 task-1] o.k.adapters.OAuthRequestAuthenticator: failed to turn code into token

javax.net.ssl.SSLHandshakeException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target

我已尝试通过添加安全证书来解决它,如以下链接 https://hub.docker.com/r/jboss/keycloak/ 所示,在设置 TLS(SSL) 部分中,使用此链接中@Vsoma 指出的解决方案 {{3 }} 并将 Keycloak 服务的卷添加到容器中,如下所示:

volumes:
  - /var/run/docker.sock:/var/run/docker.sock
  - ./themes/mytheme:/opt/jboss/keycloak/themes/mytheme
  - ./keycloak/certs:/etc/x509/https

并在 standalone.xml 中添加这一行:

<socket-binding name = "proxy-https" port = "443"/>

这不是一个确定的答案,但我认为这是解决问题的重大进步。