
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 をサポート== ビルド
: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>
----
<1> Checkstyle エラーが発生した場合にビルドを失敗させます
<2> Checkstyle 違反が発生した場合にビルドを失敗させます
<3> Checkstyle はテストソースも分析します
<4> コードを再フォーマットして Checkstyle のフォーマットルールのほとんどをパスさせる Spring Java Format プラグインを追加します
<5> ビルドフェーズとレポートフェーズに checkstyle プラグインを追加します
一部のルールを抑制する必要がある場合(例: 行の長さを長くする必要がある場合)は、${project.root}/src/checkstyle/checkstyle-suppressions.xml に抑制ルールを定義したファイルを作成するだけで十分です。例:
${spring-cloud-build.rootFolder}/.editorconfig と ${spring-cloud-build.rootFolder}/.springformat をプロジェクトにコピーすることをお勧めします。そうすることで、いくつかのデフォルトのフォーマットルールが適用されます。次のスクリプトを実行することでコピーできます: