Spring云配置身份验证问题

jdgnovmf  于 2023-01-26  发布在  Spring
关注(0)|答案(2)|浏览(171)

我正在尝试为我的一个项目配置Spring Cloud Config。它以前工作得很好。但是在最新版本的Spring中,当我尝试启用身份验证时,我遇到了麻烦。这是我看到的日志。

INFO  Fetching config from server at : http://localhost:8888
WARN  Could not locate PropertySource: Could not extract response: no suitable HttpMessageConverter found for response type [class org.springframework.cloud.config.environment.Environment] and content type [text/html;charset=UTF-8]
INFO  The following profiles are active: development

没有身份验证spring-cloud-config-client可以很好地工作,但是启用基本身份验证后,相同的代码就不能工作了。

Spring云配置服务器application.properties:

spring.application.name=my-config
server.port=8888
spring.cloud.config.server.git.uri=file:///repo/my-config
spring.security.user.name=root
spring.security.user.password=root

Spring云配置客户端 Bootstrap .yml:

spring.application.name=my-service
spring.profiles.active=development
spring.cloud.config.uri=http://localhost:8888
management.endpoints.web.exposure.include=*
spring.cloud.config.username=root
spring.cloud.config.password=root

我的配置服务器和服务项目对 Boot 和SpringCloud使用相同的version属性

<spring-boot.version>2.2.2.RELEASE</spring-boot.version>
<spring-cloud-config.version>2.2.0.RELEASE</spring-cloud-config.version>

======附加信息=====
不知何故,my-service项目没有检测到我在bootstrap.properties中指定的spring.profiles.active=development配置,我通过尝试在代码中输出此配置确认了这一点。

@Value("${spring.profiles.active}")
private String activeProfile;

logger.info("Active Profile: " + activeProfile);

奇怪的是,日志输出为空,这意味着没有活动的配置文件。所以很明显,这个bootstrap.properties配置被忽略了。为了绕过这个问题,我在my-service启动中添加了这个JVM参数。

-Dspring.profiles.active=development -Dspring.application.name=my-service

这有效地修复了配置文件未被检测到的问题。但是我仍然不清楚为什么spring.profiles.active=development配置在我的bootstrap.properties中被忽略。

qvtsj1bj

qvtsj1bj1#

您需要在“config-server”应用程序中提供native配置文件,而将development配置文件留给客户端。

配置服务器

  1. bootstrap.yml
server:
  port: 9001
  servlet.context-path: /my-config-server

spring:
  application.name: my-config-server
  profiles:
    active: native
  main:
    banner-mode: "OFF"
  cloud:
    config:
      uri: http://localhost:9001/my-config-server
      fail-fast: true
      username: root
      password: root
  1. application.yml:
spring:
  profiles: native
  cloud:
    config:
      server:
        native:
          searchLocations: file:<path-to-files>
          git:
            clone-on-start: false # Only clone(true) on-demand

配置-客户端

  1. bootstrap.yml
spring:
  application.name: user-api
  profiles:
    active: development
  main:
    #banner-mode: "OFF"
  cloud:
    config:
      uri: http://localhost:9001/my-config-server
      fail-fast: true 
      username: root
      password: root
yb3bgrhw

yb3bgrhw2#

1.服务器端-application.properties

server.port=8888
spring.application.name=config-service
spring.cloud.config.server.git.uri=${repo_uri}
spring.cloud.config.server.git.username=${git_username}
spring.cloud.config.server.git.password=${git_password}
spring.cloud.config.server.git.default-label=main
spring.security.user.name=admin
spring.security.user.password=admin

1.客户端-Application.properties

spring.config.import=configserver:http://localhost:8888
spring.cloud.config.username=admin
spring.cloud.config.password=admin
spring.profiles.active=dev

这里我在配置服务器中添加了spring security依赖项,并设置了用户名和密码。在配置客户端中,我们将提供相同的用户名和密码来连接配置服务器。我还在配置客户端中添加了活动配置文件,以便它从配置服务器中获取环境特定的属性。

相关问题