【问题标题】:Spring Cloud Data Flow Management with SSL使用 SSL 的 Spring Cloud 数据流管理
【发布时间】:2019-01-26 04:14:26
【问题描述】:

一旦本地 Spring Cloud 数据流服务器启用 ssl 并具有基本身份验证,则无法访问管理端点

我有 docker-compose.yml 文件,该文件可以使用 ssl 和基于文件的身份验证启动数据流服务器,这是可行的,我现在可以在端口 8443 上运行数据流服务器并通过提供访问仪表板正确的凭据。

  env_file:
      - .env
  dataflow-server:
    image: repo.mitchell.com/springcloud/spring-cloud-dataflow-server-local:${DATAFLOW_VERSION}
    container_name: dataflow-server
    ports:
      - "9393:9393"
      - "9900:9900"
      - "8443:8443"
      - "8081:8081"
    environment:
      - spring.cloud.dataflow.applicationProperties.stream.spring.cloud.stream.kafka.binder.brokers=kafka:9092
      - spring.cloud.dataflow.applicationProperties.stream.spring.cloud.stream.kafka.binder.zkNodes=zookeeper:2181
      - spring_datasource_url=jdbc:mysql://mysql:3306/dataflow
      - spring_datasource_username=root
      - spring_datasource_password=${MYSQL_PASS}
      - spring_datasource_driver-class-name=org.mariadb.jdbc.Driver
      - spring.cloud.dataflow.metrics.collector.uri=${METRICS_COLLECTOR_URI}:8080
      - spring.cloud.dataflow.metrics.collector.username=${METRICS_COLLECTOR_USER}
      - spring.cloud.dataflow.metrics.collector.password=${METRICS_COLLECTOR_PASS}
      - server.port=8443
      - server.ssl.enabled=true
      - server.ssl.key-store=${SSL_KEY_STORE_PATH}
      - server.ssl.key-store-password=${SSL_TRUST_STORE_PASS}
      - server.ssl.keyStoreType=JKS
      - server.ssl.keyAlias=${SSL_KEY_ALIAS}
      - security.require-ssl=true
      - server.ssl.trust-store=${SSL_TRUST_STORE_PATH}
      - server.ssl.trust-store-password=${SSL_TRUST_STORE_PASS}
      - management.security.enabled=true
      - management.context-path=/management
      - security.basic.enabled=true
      - spring.cloud.dataflow.security.authentication.file.enabled=true
      - spring.cloud.dataflow.security.authentication.file.users.bob=bobpass, ROLE_MANAGE
      - spring.cloud.dataflow.security.authentication.file.users.${FILE_AUTH_ADMIN_USER}=${FILE_AUTH_ADMIN_PASS}, ROLE_VIEW, ROLE_CREATE, ROLE_MANAGE
      - spring.cloud.dataflow.security.authentication.file.users.${FILE_AUTH_USER}=${FILE_AUTH_PASS}, ROLE_VIEW

我希望https://<ipaddress>:8443/management 可以访问,但它会一直重定向到https://<ipaddress>:8443/dashboard/#/apps

【问题讨论】:

  • 如果我暴露端口 8081:8081 并尝试这个 - management.port=8081 , - management.ssl.enabled=false, - management.security.enabled=false 那么当我我得到一个不同的错误访问 http://:8081/management
  • 错误是 2019-01-25 01:41:01.957 INFO 1 --- [nio-8081-exec-4] o.apache.coyote.http11.Http11Processor : Error parsing HTTP request header数据流服务器 |注意:进一步出现的 HTTP 标头解析错误将在 DEBUG 级别记录。数据流服务器 |数据流服务器 | java.lang.IllegalArgumentException:在方法名称中发现无效字符。 HTTP 方法名称必须是标记

标签: spring-cloud-dataflow


【解决方案1】:

这是将 UI 和 RestEndpoints 置于同一根目录下的限制(设计使然)。因此,如果您使用浏览器访问服务器,我们默认提供 UI 并重定向到 /dashboard

如果您使用curl 等命令行工具,则会提供 JSON REST 响应,例如:

curl -X GET -k -i https://localhost:8443/management -u user:secret_password

使用浏览器时,我建议使用Postman (Chrome) 或RESTClient (Firefox)。

【讨论】:

  • 不错。我克隆了源代码,并且确实看到 index.html 具有指向“/”的基本引用,这是我们可以将其放在具有路由规范的动态负载平衡器之后的另一个原因,例如 zuul 期望非根上下文路径。可以更改,但必须重新映像等。
  • 如果您可以将问题标记为已解决,那就太好了 - 谢谢! :-)
猜你喜欢
  • 2021-03-01
  • 1970-01-01
  • 2018-04-16
  • 2020-11-22
  • 1970-01-01
  • 2015-07-21
  • 2019-07-23
  • 2019-03-02
  • 2021-04-20
相关资源
最近更新 更多