Управление потоками данных Spring Cloud с помощью SSL

Невозможно получить доступ к конечной точке управления после того, как локальный весенний облачный сервер потока данных включен 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

1 ответ

Решение

Это ограничение (по замыслу) наличия UI и RestEndpoints в одном корне. Поэтому, если вы подключаетесь к серверу с помощью браузера, мы по умолчанию обслуживаем пользовательский интерфейс и перенаправляем на /dashboard

Если вы используете инструменты командной строки, такие как curlответ JSON REST подается, например:

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

При использовании браузера я бы рекомендовал использовать Postman (Chrome) или RESTClient (Firefox).

Другие вопросы по тегам