为什么我在 Spring Boot 2 on Cloud Foundry{using Cloud Config Server service} 上收到 403 Forbidden error for actuator /refresh endpoint
WhyI am Getting 403 Forbidden error for actuator /refresh endpoint on Spring Boot 2 on Cloud Foundry{using Cloud Config Server service}
在我的项目中,我有以下 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 进行任何更改?
我得到了解决方案,我需要添加一个安全配置,例如:
@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
我注意到 Spring Boot 2 云配置在提交(或其他事件)后不需要 "hooked to /refresh endpoint",因为新版本总是请求远程 git 服务器并进行比较最后一个 commitId 和如果不同的 commitId 开始获取更改。
如果调试并查看日志跟踪,在请求 http://host:8888/{service}/{profile}/{label_branch} 之后总是询问 github,您会注意到如果exist 更改 "fetch proccess is started " ,查看类似 github negotiation:
的痕迹
o.e.jgit.transport.PacketLineOut - git> 想要 4a766a1677....
o.e.jgit.transport.PacketLineOut - git> 有 93cd4a98b5b3bb7d895...
最后
o.e.jgit.transport.PacketLineOut - git> 完成
然后,下载:
o.e.jgit.transport.PacketLineIn - git< ACK 0f8d2413183d5.... 常见
等等。
如果你看痕迹不存在变化(最后的commitId相同,不显示协商和下载痕迹)。
我认为这不是一个好的性能行为,所以会存在一个禁用它的 属性,因此需要一个 "forced refresh hook behaviour",但我在 Spring 上找不到它引导 2。
另一方面,我喜欢它是因为您不需要启用对您的配置服务器的 HTTP 访问来获得通知,因此安全配置不会受到损害。
我试过 Greenwich.RELEASE
希望这有助于澄清这种行为。
在我的项目中,我有以下 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 进行任何更改?
我得到了解决方案,我需要添加一个安全配置,例如:
@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
我注意到 Spring Boot 2 云配置在提交(或其他事件)后不需要 "hooked to /refresh endpoint",因为新版本总是请求远程 git 服务器并进行比较最后一个 commitId 和如果不同的 commitId 开始获取更改。
如果调试并查看日志跟踪,在请求 http://host:8888/{service}/{profile}/{label_branch} 之后总是询问 github,您会注意到如果exist 更改 "fetch proccess is started " ,查看类似 github negotiation:
的痕迹o.e.jgit.transport.PacketLineOut - git> 想要 4a766a1677.... o.e.jgit.transport.PacketLineOut - git> 有 93cd4a98b5b3bb7d895... 最后 o.e.jgit.transport.PacketLineOut - git> 完成
然后,下载: o.e.jgit.transport.PacketLineIn - git< ACK 0f8d2413183d5.... 常见 等等。
如果你看痕迹不存在变化(最后的commitId相同,不显示协商和下载痕迹)。
我认为这不是一个好的性能行为,所以会存在一个禁用它的 属性,因此需要一个 "forced refresh hook behaviour",但我在 Spring 上找不到它引导 2。 另一方面,我喜欢它是因为您不需要启用对您的配置服务器的 HTTP 访问来获得通知,因此安全配置不会受到损害。
我试过 Greenwich.RELEASE
希望这有助于澄清这种行为。