在我的项目中,我有以下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中进行任何更改吗?
答案 0 :(得分:7)
我找到了解决方案,我需要添加一个安全配置,例如:
@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
答案 1 :(得分:0)
我注意到,在提交(或其他事件)之后,不需要将Spring Boot 2云配置“挂接到/ refresh端点”,因为新版本始终会请求远程git Server并比较最后的commitId和是否为不同的commitId开始获取更改。
如果调试并查看日志跟踪,请在请求http://host:8888/ {service} / {profile} / {label_branch}之后始终询问github,您会注意到,如果存在更改,则会启动“获取过程已启动”,像github谈判这样的痕迹:
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 如果您查找跟踪但不存在更改(最后的commitId相同,则不会显示协商和下载跟踪)。 我认为这不是一个好的性能行为,因此将存在一个禁用它的属性,因此需要“强制刷新挂钩行为”,但是我在Spring boot 2上找不到它。
另一方面,我喜欢它,因为您不需要启用对您的配置服务器的HTTP访问就可以得到通知,因此安全配置不会受到损害。 我尝试过Greenwich.RELEASE 希望这有助于并阐明这种行为。