在我的项目中,我有以下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云配置不需要在提交(或其他事件)后“挂钩/刷新端点”,因为新版本总是请求远程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
希望这有助于澄清这种行为。