为什么我在Cloud Foundry上的Spring Boot 2上获取403 Forbidden执行器/刷新端点的错误{使用Cloud Config Server服务}

问题描述 投票:5回答:2

在我的项目中,我有以下bootstrap.properties文件:

spring.application.name=vault-demo
management.endpoints.web.exposure.include=*

除此之外,我还定义了以下依赖项:

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-actuator</artifactId>
</dependency>

配置服务器能够访问该属性,但是当我在GitHub中更新该属性并POST到/refresh时,我得到了一个403: Forbidden。我是否需要在我的应用程序或bootstrap.properties中进行任何更改?

spring-boot spring-boot-actuator spring-cloud-config
2个回答
8
投票

我得到了解决方案,我需要添加安全配置,例如:

@Configuration
@EnableWebSecurity
public class SecurityConfiguration extends WebSecurityConfigurerAdapter{

    @Override
    protected void configure(HttpSecurity http) throws Exception {
        http.csrf().disable();
    }
}

另外,我必须添加以下依赖项:

<dependency> 
    <groupId>org.springframework.security</groupId> 
    <artifactId>spring-security-rsa</artifactId> 
    <version>1.0.5.RELEASE</version> 
</dependency>

我在以下GitHub问题中找到了这个解决方案:https://github.com/spring-cloud/spring-cloud-config/issues/950


0
投票

我注意到Spring Boot 2云配置不需要在提交(或其他事件)后“挂钩/刷新端点”,因为新版本总是请求远程git服务器并比较最后的commitId以及是否不同的commitId开始获取变化。

如果调试并查看日志跟踪,请求后http://host:8888/ {service} / {profile} / {label_branch}总是询问github,您会注意到如果存在更改“fetch proccess is started”,请查看跟github协商的跟踪:

o.e.jgit.transport.PacketLineOut - git>想要4a766a1677 .... o.e.jgit.transport.PacketLineOut - git>有93cd4a98b5b3bb7d895 ......最后是o.e.jgit.transport.PacketLineOut - git> done

之后,下载:o.e.jgit.transport.PacketLineIn - git <ACK 0f8d2413183d5 ....常见等等。

如果您查看跟踪并且不存在更改(最后一次commitId相同,则不显示协商和下载跟踪)。

我认为这不是一个好的性能行为,所以会存在一个禁用它的属性,因此需要一个“强制刷新钩子行为”,但我在Spring boot 2上找不到它。另一方面,我喜欢它,因为您不需要启用对配置服务器的HTTP访问以进行通知,因此安全配置不会受到影响。

我试过Greenwich.RELEASE

希望这有助于澄清这种行为。

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