春云数据流服务器云代工重定向到https

时间:2017-09-11 16:17:24

标签: pivotal-cloud-foundry spring-cloud-dataflow

我已经和他摔跤了好几天了。我想将Cloud Founding的Spring Cloud Data Flow Server部署到我的组织企业Pivotal Cloud Foundry实例。我的问题是强制所有数据流服务器Web请求到TLS / HTTPS。以下是我尝试实现此功能的配置示例:

# manifest.yml
---
applications:
- name: gdp-dataflow-server
  buildpack: java_buildpack_offline
  host: dataflow-server
  memory: 2G
  disk_quota: 2G
  instances: 1
  path: spring-cloud-dataflow-server-cloudfoundry-1.2.3.RELEASE.jar
  env:
    SPRING_APPLICATION_NAME: dataflow-server
    SPRING_CLOUD_DEPLOYER_CLOUDFOUNDRY_URL: https://api.system.x.x.io
    SPRING_CLOUD_DEPLOYER_CLOUDFOUNDRY_ORG: my-org
    SPRING_CLOUD_DEPLOYER_CLOUDFOUNDRY_SPACE: my-space
    SPRING_CLOUD_DEPLOYER_CLOUDFOUNDRY_DOMAIN: my-domain.io
    SPRING_CLOUD_DEPLOYER_CLOUDFOUNDRY_USERNAME: user
    SPRING_CLOUD_DEPLOYER_CLOUDFOUNDRY_PASSWORD: pass
    SPRING_CLOUD_DEPLOYER_CLOUDFOUNDRY_STREAM_SERVICES: dataflow-mq
    SPRING_CLOUD_DEPLOYER_CLOUDFOUNDRY_STREAM_BUILDPACK: java_buildpack_offline
    SPRING_CLOUD_DEPLOYER_CLOUDFOUNDRY_TASK_SERVICES: dataflow-db
    SPRING_APPLICATION_JSON: |
      {
        "server": {
          "use-forward-headers": true,
          "tomcat": {
            "remote-ip-header": "x-forwarded-for",
            "protocol-header": "x-forwarded-proto"
          }
        },
        "management": {
          "context-path": "/management",
          "security": {
            "enabled": true
          }
        },
        "security": {
          "require-ssl": true,
          "basic": {
            "enabled": true,
            "realm": "Data Flow Server"
          },
          "user": {
            "name": "dataflow-admin",
            "password": "nimda-wolfatad"
          }
        }
services:
  dataflow-db
  dataflow-redis

尽管security中存在SPRING_APPLICATION_JSON块,但仍可通过不安全的HTTP访问数据流服务器的Web端点。如何强制所有HTTPS请求?我是否需要自定义我自己的Cloud Foundry数据流服务器版本?我知道PCF的代理正在负载均衡器上终止SSL / TLS,但配置转发头应该会导致Spring Security / Tomcat按照我想要的方式运行,如果不是的话?我必须在这里遗漏一些明显的东西,因为这似乎是一个不应该这么困难的共同愿望。

谢谢。

1 个答案:

答案 0 :(得分:0)

Spring Boot没有任何开箱即用的功能可以启用/禁用HTTPS,同时拦截和自动重定向普通HTTP - > HTTPS。

有几篇关于如何编写自定义Configuration类以在Spring Boot 中接受多个连接器的在线文献(请参阅example

Spring Cloud Data Flow(SCDF)是一个简单的Spring Boot应用程序,所以这一切也适用于SCDF服务器。

也就是说,如果您打算在整个应用程序交互中强制执行HTTPS,那么可以在弹性运行时中应用PCF设置[Disable HTTP traffic to HAProxy]作为全局覆盖 - 请参阅docs。这始终如一地适用于所有应用程序,它不仅仅适用于Spring Boot或SCDF。甚至可以强制使用Python或Node或其他类型的应用程序通过HTTPS与此设置进行交互。