web-dev-qa-db-ja.com

Cloud FoundryのSpring Boot 2のアクチュエータ/ refreshエンドポイントで403 Forbiddenエラーが発生する理由{Cloud Config Serverサービスを使用}

私のプロジェクトには、次の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に変更を加える必要がありますか?

7
Shivi Sharma

私は解決策を得ました、例えばセキュリティ構成を追加する必要がありました:

@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

8
Shivi Sharma

新しいバージョンは常にリモート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で試しました

これがこの動作に役立ち、明確になることを願っています。

0
danipenaperez