私のプロジェクトには、次の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 to /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/95
新しいバージョンは常にリモートgitサーバーにリクエストし、最後のcommitIdを比較して、異なるcommitIdがフェッチを開始するため、Spring Boot 2クラウド構成をコミット(または他のイベント)後に「フック/ refreshエンドポイント」する必要がないことに気づきました変更。
デバッグしてログトレースを表示する場合、リクエスト後 http:// Host:8888 / {service}/{profile}/{label_branch}は常にgithubに問い合わせます。存在する場合、「フェッチプロセスが開始されました」、githubネゴシエーションのようなトレースを見てください。
oejgit.transport.PacketLineOut-git>want4a766a1677 .... oejgit.transport.PacketLineOut-git>have93cd4a98b5b3bb7d895 ...そして最後にoejgit.transport.PacketLineOut-git>done
その後、ダウンロード:o.e.jgit.transport.PacketLineIn-git <ACK 0f8d2413183d5 ....共通など。
トレースを調べ、存在しない変更がある場合(最後のcommitIdが同じ場合、ネゴシエーションとダウンロードのトレースは表示されません)。
これは良いパフォーマンスの動作ではないので、それを無効にするプロパティが存在するため、「強制リフレッシュフック動作」が必要ですが、Springブート2では見つかりませんでした。通知を受けるために設定サーバーへのHTTPアクセスを有効にする必要はありません。そのため、セキュリティ設定は危険にさらされません。
Greenwich.RELEASEで試しました
これがこの動作に役立ち、明確になることを願っています。