[Spring Cloud Config客户端在Spring Security处于活动状态时未获取配置

问题描述 投票:1回答:1

当我在没有Spring Security的情况下运行Spring Cloud配置服务器时,该服务会毫无问题地获取配置,但是当我激活Spring Security时,它将不会获取配置文件。似乎抛出401 http错误。我检查了用户名和密码是否正确,还尝试了使用user:password @ url进行身份验证的方法。

如果我直接在浏览器中访问URL http://localhost:8888/service/default,然后输入用户名和密码,则会显示配置。

将提供任何帮助,我不确定我的云配置或安全配置是否存在问题。

Spring Boot版本:'2.2.4.RELEASE'spring-cloud-config-server版本:'2.2.1.RELEASE'构建系统:GradleJava 8

此配置始终失败,我尝试将其添加到已有的现有服务中,但它不起作用,因此我通过使用以下配置的https://start.spring.io/上的spring初始化程序创建了新的配置服务器和新的客户端,但仍然无法正常工作。

安全性处于活动状态时记录:

2020-02-19 14:29:16.553  INFO 14996 --- [           main] c.c.c.ConfigServicePropertySourceLocator : Fetching config from server at : http://localhost:8888
2020-02-19 14:29:16.577 DEBUG 14996 --- [           main] o.s.web.client.RestTemplate              : HTTP GET http://localhost:8888/service/default
2020-02-19 14:29:16.634 DEBUG 14996 --- [           main] o.s.web.client.RestTemplate              : Accept=[application/json, application/*+json]
2020-02-19 14:29:16.647 DEBUG 14996 --- [           main] o.s.web.client.RestTemplate              : Response 401 UNAUTHORIZED
2020-02-19 14:29:16.652  WARN 14996 --- [           main] c.c.c.ConfigServicePropertySourceLocator : Could not locate PropertySource: 401 : [{"timestamp":"2020-02-19T12:29:16.642+0000","status":401,"error":"Unauthorized","message":"Unauthorized","path":"/service/default"}]

禁用安全性/全部允许时记录

2020-02-19 12:43:13.756  INFO 4972 --- [           main] c.c.c.ConfigServicePropertySourceLocator : Fetching config from server at : http://localhost:8888
2020-02-19 12:43:17.563  INFO 4972 --- [           main] c.c.c.ConfigServicePropertySourceLocator : Located environment: name=service, profiles=[default], label=null, version=fb9ccb6e46098bfe425130d6447a0797206e5c2f, state=null

配置服务器application.yml文件github uri被遮盖,与私有仓库的连接不是问题。

server:
  port: 8888

spring:
  application:
    name: config-server
  security:
    user:
      name: 'root'
      password: '1234'
  cloud:
    config:
      server:
        git:
          uri: <github-uri>
          ignore-local-ssh-settings: false
          strict-host-key-checking: false
          private-key: 'classpath:resources/id_rsa'

service application.yml文件

spring:
  application:
    name: service
  cloud:
    config:
      uri: http://localhost:8888
      username: 'root'
      password: '1234'
      fail-fast: true

Web安全是非常基本的,但下面是安全配置:

@Configuration
@EnableWebSecurity
public class SecurityConfig extends WebSecurityConfigurerAdapter {

    // Secure the endpoints with HTTP Basic authentication
    @Override
    protected void configure(HttpSecurity http) throws Exception {
        http.authorizeRequests().antMatchers("/**").fullyAuthenticated();
        http.httpBasic().and().exceptionHandling();
    }
}
java spring spring-security spring-cloud spring-cloud-config
1个回答
0
投票

对于客户端应用程序,您应该使用bootstrap.yaml(而不是application.yaml)。>>

它在没有安全性的情况下起作用,仅是因为您的客户端使用的是默认配置,该配置没有用户名和密码。启用安全性后,它会返回401,因为默认的用户名和密码为空。

© www.soinside.com 2019 - 2024. All rights reserved.