
APIセキュリティテストと脆弱性分析のためのCVE-2022-22947エクスプロイトを実証するSpring Cloud Gatewayリポジトリ。
//// DO NOT EDIT THIS FILE. IT WAS GENERATED. Manual changes to this file will be lost when it is generated again. Edit the files in the src/main/asciidoc/ directory instead. ////
image::https://circleci.com/gh/spring-cloud/spring-cloud-gateway/tree/master.svg?style=svg["CircleCI", link="https://circleci.com/gh/spring-cloud/spring-cloud-gateway/tree/master"] image::https://codecov.io/gh/spring-cloud/spring-cloud-gateway/branch/master/graph/badge.svg["Codecov", link="https://codecov.io/gh/spring-cloud/spring-cloud-gateway/branch/master"] image::https://api.codacy.com/project/badge/Grade/a6885a06921e4f72a0df0b7aabd6d118["Codacy code quality", link="https://www.codacy.com/app/spring-cloud/spring-cloud-gateway?utm_source=github.com&utm_medium=referral&utm_content=spring-cloud/spring-cloud-gateway&utm_campaign=Badge_Grade"]
このプロジェクトは、Spring エコシステム(Spring 5、Spring Boot 2、Project Reactor)の上に構築された API ゲートウェイを提供します。Spring Cloud Gateway は、API へのルーティングと、セキュリティ、監視/メトリクス、回復性などの横断的関心事を提供するための、シンプルかつ効果的な方法を提供することを目的としています。
== 機能
DiscoveryClient をサポート== ビルド
true <1> true <2> true <3> <4> io.spring.javaformat spring-javaformat-maven-plugin <5> org.apache.maven.plugins maven-checkstyle-plugin ---- <1> Checkstyle エラーが発生した場合にビルドを失敗させます <2> Checkstyle 違反が発生した場合にビルドを失敗させます <3> Checkstyle はテストソースも分析します <4> コードを再フォーマットして Checkstyle のフォーマットルールのほとんどをパスさせる Spring Java Format プラグインを追加します <5> ビルドフェーズとレポートフェーズに checkstyle プラグインを追加します ---- org.basepom.maven duplicate-finder-maven-plugin ---- org.basepom.maven duplicate-finder-maven-plugin org.joda.time.base.BaseDateTime .*module-info changelog.txt ----:jdkversion: 1.8
=== 基本的なコンパイルとテスト
ソースをビルドするには、JDK {jdkversion} をインストールする必要があります。
Spring Cloud は、ビルド関連のほとんどのアクティビティに Maven を使用します。関心のあるプロジェクトをクローンして、次のように入力すれば、すぐに始められるはずです。
NOTE: 自分で Maven(>=3.3.3)をインストールし、以下の例で ./mvnw の代わりに mvn コマンドを実行することもできます。その場合、ローカルの Maven 設定に Spring のプレリリース成果物のリポジトリ宣言が含まれていない場合は、-P spring を追加する必要があるかもしれません。
NOTE: MAVEN_OPTS 環境変数に -Xmx512m -XX:MaxPermSize=128m のような値を設定して、Maven が利用できるメモリ量を増やす必要がある場合があることに注意してください。.mvn 設定でこれをカバーしようとしているので、ビルドを成功させるためにこれを設定する必要があることに気付いた場合は、設定をソース管理に追加してもらうようチケットを上げてください。
テストにミドルウェア(つまり Redis)を必要とするプロジェクトでは、通常、ローカルの Docker インスタンスがインストールされ、実行されている必要があります。
=== ドキュメント
spring-cloud-build モジュールには "docs" プロファイルがあります。これを有効にすると、src/main/asciidoc から asciidoc ソースをビルドしようとします。そのプロセスの一環として、README.adoc を探し、すべてのインクルードを読み込んで処理しますが、解析やレンダリングは行わず、${main.basedir}(デフォルトは ${basedir}、つまりプロジェクトのルート)にコピーするだけです。README に変更があると、Maven ビルド後に正しい場所に変更されたファイルとして表示されます。コミットしてプッシュするだけです。
=== コードの操作
IDE の好みがない場合は、コードを扱う際に https://www.springsource.com/developer/sts[Spring Tools Suite] または https://eclipse.org[Eclipse] を使用することをお勧めします。Maven サポートには https://eclipse.org/m2e/[m2eclipse] Eclipse プラグインを使用しています。Maven 3.3.3 以降を使用している限り、他の IDE やツールも問題なく動作するはずです。
==== Spring Maven プロファイルを有効にする
Spring Cloud プロジェクトでは、Spring のマイルストーンリポジトリとスナップショットリポジトリを解決するために、'spring' Maven プロファイルを有効にする必要があります。お好みの IDE を使用してこのプロファイルを有効に設定してください。設定しないとビルドエラーが発生する可能性があります。
==== m2eclipse を使用して Eclipse にインポートする
Eclipse を使用する場合は、https://eclipse.org/m2e/[m2eclipse] Eclipse プラグインをお勧めします。m2eclipse をまだインストールしていない場合は、"Eclipse マーケットプレース" から入手できます。
NOTE: 古いバージョンの m2e は Maven 3.3 をサポートしていないため、プロジェクトを Eclipse にインポートした後、プロジェクトに適したプロファイルを使用するように m2eclipse に指示する必要もあります。プロジェクト内の POM に関連するさまざまなエラーが表示される場合は、インストールが最新であることを確認してください。m2e をアップグレードできない場合は、"spring" プロファイルを settings.xml に追加してください。あるいは、親 pom の "spring" プロファイルからリポジトリ設定を settings.xml にコピーすることもできます。
==== m2eclipse を使用せずに Eclipse にインポートする
m2eclipse を使用したくない場合は、次のコマンドを使用して Eclipse プロジェクトのメタデータを生成できます。
$ ./mvnw eclipse:eclipse
生成された Eclipse プロジェクトは、file メニューから import existing projects を選択してインポートできます。
== コントリビュート
:spring-cloud-build-branch: master
Spring Cloud は、制限の少ない Apache 2.0 ライセンスの下でリリースされており、Github トラッカーを問題の管理とプルリクエストの master へのマージに使用する、ごく標準的な Github 開発プロセスに従っています。些細なことでも貢献したい場合は、ためらわずに以下のガイドラインに従ってください。
=== コントリビューターライセンス契約に署名する
重要なパッチやプルリクエストを受け入れる前に、https://cla.pivotal.io/sign/spring[コントリビューターライセンス契約] への署名が必要です。コントリビューター契約への署名は、メインリポジトリへのコミット権を誰かに与えるものではありませんが、あなたの貢献を受け入れることができることを意味し、受け入れた場合には著者クレジットが与えられます。積極的なコントリビューターはコアチームへの参加を求められ、プルリクエストをマージする権限を与えられる可能性があります。
=== 行動規範
このプロジェクトは、Contributor Covenant https://github.com/spring-cloud/spring-cloud-build/blob/master/docs/src/main/asciidoc/code-of-conduct.adoc[行動規範] に準拠しています。参加することで、この規範を守ることが期待されます。受け入れがたい行為は [email protected] まで報告してください。
=== コード規約とハウスキーピング
これらのどれもプルリクエストに必須ではありませんが、すべて役立ちます。これらは、最初のプルリクエストの後、マージの前に追加することもできます。
eclipse-code-formatter.xml ファイルを使用してフォーマッター設定をインポートできます。IntelliJ を使用する場合は、https://plugins.jetbrains.com/plugin/6546[Eclipse Code Formatter プラグイン] を使用して同じファイルをインポートできます。.java ファイルにはすべて、少なくともあなたを識別する @author タグと、可能であればクラスの目的に関する段落を含む、シンプルな Javadoc クラスコメントがあることを確認してください。.java ファイルに ASF ライセンスヘッダーコメントを追加します(プロジェクト内の既存ファイルからコピー)。.java ファイルに @author として自分を追加します。Fixes gh-XXXX を追加してください(XXXX は問題番号です)。=== Checkstyle
Spring Cloud Build には一連の checkstyle ルールが付属しています。これらは spring-cloud-build-tools モジュールにあります。このモジュールにある最も注目すべきファイルは次のとおりです。
<1> デフォルトの Checkstyle ルール <2> ファイルヘッダー設定 <3> デフォルトの抑制ルール
==== Checkstyle 設定
Checkstyle ルールは デフォルトでは無効 です。プロジェクトに Checkstyle を追加するには、次のプロパティとプラグインを定義するだけです。
<reporting>
<plugins>
<plugin> <5>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-checkstyle-plugin</artifactId>
</plugin>
</plugins>
</reporting>
一部のルールを抑制する必要がある場合(例: 行の長さを長くする必要がある場合)は、${project.root}/src/checkstyle/checkstyle-suppressions.xml に抑制ルールを定義したファイルを作成するだけで十分です。例:
${spring-cloud-build.rootFolder}/.editorconfig と ${spring-cloud-build.rootFolder}/.springformat をプロジェクトにコピーすることをお勧めします。そうすることで、いくつかのデフォルトのフォーマットルールが適用されます。次のスクリプトを実行することでコピーできます:
$ curl https://raw.githubusercontent.com/spring-cloud/spring-cloud-build/master/.editorconfig -o .editorconfig
$ touch .springformat
=== IDE セットアップ
==== Intellij IDEA
Intellij をセットアップするには、コーディング規約、インスペクションプロファイルをインポートし、checkstyle プラグインをセットアップする必要があります。次のファイルは https://github.com/spring-cloud/spring-cloud-build/tree/master/spring-cloud-build-tools[Spring Cloud Build] プロジェクトにあります。
<1> デフォルトの Checkstyle ルール <2> ファイルヘッダー設定 <3> デフォルトの抑制ルール <4> Checkstyle ルールのほとんどを適用する Intellij のプロジェクトデフォルト <5> Checkstyle ルールのほとんどを適用する Intellij のプロジェクトスタイル規約
.コードスタイル
File -> Settings -> Editor -> Code style に移動します。Scheme セクションの横にあるアイコンをクリックします。次に、Import Scheme の値をクリックし、Intellij IDEA code style XML オプションを選択します。spring-cloud-build-tools/src/main/resources/intellij/Intellij_Spring_Boot_Java_Conventions.xml ファイルをインポートします。
.インスペクションプロファイル
File -> Settings -> Editor -> Inspections に移動します。Profile セクションの横にあるアイコンをクリックします。次に、Import Profile をクリックし、spring-cloud-build-tools/src/main/resources/intellij/Intellij_Project_Defaults.xml ファイルをインポートします。
.Checkstyle
Intellij で Checkstyle を動作させるには、Checkstyle プラグインをインストールする必要があります。JUnit のアサーションを自動的に変換するために、Assertions2Assertj もインストールすることをお勧めします。
File -> Settings -> Other settings -> Checkstyle に移動します。Configuration file セクションの + アイコンをクリックします。そこで、checkstyle ルールをどこから取得するかを定義する必要があります。上の画像では、クローンした Spring Cloud Build リポジトリからルールを取得しています。ただし、Spring Cloud Build の GitHub リポジトリを指定することもできます(例: checkstyle.xml の場合: https://raw.githubusercontent.com/spring-cloud/spring-cloud-build/master/spring-cloud-build-tools/src/main/resources/checkstyle.xml)。次の変数を指定する必要があります:
checkstyle.header.file - クローンしたリポジトリ内の Spring Cloud Build の spring-cloud-build-tools/src/main/resources/checkstyle-header.txt ファイル、または https://raw.githubusercontent.com/spring-cloud/spring-cloud-build/master/spring-cloud-build-tools/src/main/resources/checkstyle-header.txt URL を指定してください。checkstyle.suppressions.file - デフォルトの抑制ルールです。クローンしたリポジトリ内の Spring Cloud Build の spring-cloud-build-tools/src/checkstyle/checkstyle-suppressions.xml ファイル、または https://raw.githubusercontent.com/spring-cloud/spring-cloud-build/master/spring-cloud-build-tools/src/checkstyle/checkstyle-suppressions.xml URL を指定してください。checkstyle.additional.suppressions.file - この変数は、ローカルプロジェクトの抑制ルールに対応します。例: spring-cloud-contract で作業している場合。project-root/src/checkstyle/checkstyle-suppressions.xml フォルダーを指定します。spring-cloud-contract の例: /home/username/spring-cloud-contract/src/checkstyle/checkstyle-suppressions.xml。重要: 本番ソースとテストソースの両方に checkstyle ルールを適用するため、Scan Scope を All sources に設定することを忘れないでください。
=== Duplicate Finder
Spring Cloud Build には basepom:duplicate-finder-maven-plugin が付属しており、Java クラスパス上の重複および競合するクラスとリソースにフラグを付けることができます。
==== Duplicate Finder 設定
Duplicate finder は デフォルトで有効 であり、Maven ビルドの verify フェーズで実行されますが、プロジェクトの pom.xml の build セクションに duplicate-finder-maven-plugin を追加した場合にのみ、プロジェクトで有効になります。
その他のプロパティについては、https://github.com/basepom/duplicate-finder-maven-plugin/wiki[プラグインドキュメント] に記載されているデフォルト値を設定しています。
選択したプロパティの値に duplicate-finder-maven-plugin というプレフィックスを付けて設定することで、簡単に上書きできます。たとえば、ビルドで重複チェックをスキップするには、duplicate-finder-maven-plugin.skip を true に設定します。
セットアップに ignoredClassPatterns または ignoredResourcePatterns を追加する必要がある場合は、プロジェクトのプラグイン設定セクションに追加してください: