当前位置: 首页 > 知识库问答 >
问题:

Spring Cloud Config Server上的Spring Security处于活动状态时,Spring Cloud Config客户端不获取配置

邹俊豪
2023-03-14

当我在没有spring security的情况下运行spring cloud config server时,服务会毫无问题地获取配置,但当我激活spring security时,它不会获取配置文件。它似乎抛出一个401 http错误。我已经检查了用户名和密码是否正确,我也尝试了User:password@url的方式来验证同样的问题。

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

任何帮助都将被感激,我不确定是否有问题与我的云配置或我的安全配置。

Spring启动版本:“2.2.4.release”
spring-cloud-config-server版本:“2.2.1.release”
构建系统:Gradle
Java 8

安全性处于活动状态时日志:

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

config server 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'
spring:
  application:
    name: service
  cloud:
    config:
      uri: http://localhost:8888
      username: 'root'
      password: '1234'
      fail-fast: true
@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();
    }
}

共有1个答案

朱丰
2023-03-14

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

它在没有安全性的情况下工作,只是因为您的客户机使用的是默认配置,它没有用户名和密码。当您启用安全性时,它返回401,因为默认用户名和密码为空。

 类似资料:
  • 问题内容: 从MDN for NodeList: 在某些情况下,NodeList是一个实时集合,这意味着DOM中的更改会反映在集合中。例如,Node.childNodes处于活动状态: 在其他情况下,NodeList是静态集合,这意味着DOM中的任何后续更改都不会影响集合的内容。document.querySelectorAll返回一个静态NodeList。 所以....有点烦!是否有任何关于哪些

  • 问题内容: 我正在使用Socket.io,并且想知道从客户端到服务器的连接状态。 像这样: 如果连接断开或由于任何原因断开连接,我需要此信息来向用户提供视觉反馈。 问题答案: 您可以检查属性: 它是动态更新的,如果连接丢失,它将设置为,直到客户端再次选择连接为止。很容易检查或类似的东西。 另一个解决方案是捕获事件并自己跟踪状态。

  • 问题内容: 我目前正在使用Laravel应用程序,为了防止垃圾邮件,我决定只有活跃的用户才能登录。我目前正在使用Laravel的登录系统,就像Laravel的官方网站教程中一样,这是我的表单操作: 这完全可以正常工作,但是我想检查用户的活动状态,如果不活动,它将被重定向到激活页面,否则它将登录。有没有简单的方法可以执行此操作,或者我有义务制造新的控制器,路由和进行更多验证?谢谢。 编辑:忘记提及我

  • 我通过一个spring上下文注入了一个JAX RS客户端,如下所示: 在成功响应(200、202、204)的情况下,如何访问响应状态?

  • 我在玩QUARKUS,我试图创建摄取服务,它将数据发送到kafka或另一个RESTendpoint。我已经向项目添加了“夸克斯-小黑麦-反应性-消息传递-Kafka”和“夸克斯-反应性-消息传递-超文本传输协议”依赖项。我想只有一个特定的管道,即超文本传输协议- 现在的问题是,即使我有Kafka连接器注释在我的application.propertues,Kafka的健康检查仍然运行,并显示Kaf

  • 那么我应该做些什么来实现这个目标呢?如有任何帮助/线索,请提前感谢