Spring Cloud Config基本安全性抛出401错误

时间:2019-05-28 07:17:09

标签: spring-cloud-config

我在服务器端进行了以下配置:

server:
  port: 8888

spring:
  profiles:
    active: native
  cloud:
    config:
      server:
        native:
          search-locations: "classpath:/config"
  security:
    user:
      name: test
      password: test

并在客户端进行以下配置:

spring:
  cloud:
    config:
      fail-fast: true
      profile: "${spring.profiles.active}"
      uri: "${SPRING_CLOUD_CONFIG_URI:http://localhost:8888/}"
      username: test
      password: test

我可以使用user/pwd作为test/test从浏览器成功访问属性,但是当我的客户端尝试获取它时,它失败并显示401错误:

INFO 7620 --- [5cee934b64bfd92] c.c.c.ConfigServicePropertySourceLocator : Fetching config from server at : http://localhost:8888
WARN 7620 --- [5cee934b64bfd92] c.c.c.ConfigServicePropertySourceLocator : Could not locate PropertySource: 401 null

我尝试将spring cloud的日志级别设置为DEBUG,但没有其他日志记录,因此我不知道为什么从客户端获取401,而我可以使用相同的凭据通过浏览器成功访问属性。

我还尝试过从服务器和客户端中删除安全性,并且它运行良好,这意味着其余配置还可以。但是问题是,应用基本安全性时我会忽略什么?为什么它不起作用并抛出401?

3 个答案:

答案 0 :(得分:0)

请检查您指定配置文件名称的方式是否正确,以及是否已在Java代码中正确解析。您可以实现CommandLineRunner并从Environment变量打印活动配置文件。

如果您在pom.xml中将属性 spring.profiles.active 指定为本地属性,则可以在application / yaml文件中将其解析为@ spring.profiles.active @

如果您将属性文件指定为VM参数,则它应与当前实现一起使用。

如果未在pom或VM参数中指定spring.profiles.active,它将解析为默认配置文件,而不是本机配置文件。配置客户端和配置服务器中的配置文件应该相同。

答案 1 :(得分:0)

尝试检查这些配置:

  • spring.cloud.config.username
  • spring.cloud.config.password

两个属性都应该在 bootstrap.properties(而不是 application.properties)中定义

答案 2 :(得分:0)

是的,我们必须使用引导程序属性,因为当 Spring Cloud 应用程序启动时,它会创建一个引导程序上下文。 bootstrap 上下文正在搜索 bootstrap.properties 或 bootstrap.yaml 文件,而应用程序上下文正在搜索 application.properties 或 application.yaml 文件。 bootstrap 上下文是主应用程序的父上下文