web-dev-qa-db-ja.com

Spring Securityの@Order(SecurityProperties.ACCESS_OVERRIDE_ORDER)vs ManagementServerProperties.ACCESS_OVERRIDE_ORDER

Question1:Spring Securityでは、正確に機能は何ですか

@Order(SecurityProperties.ACCESS_OVERRIDE_ORDER)

Springのドキュメントには以下が記載されていますが、明確に理解しているとはわかりません

他の自動構成機能を変更せずにアクセスルールをオーバーライドするには、@Order(SecurityProperties.ACCESS_OVERRIDE_ORDER)を使用してWebSecurityConfigurerAdapterタイプの@Beanを追加します。

Spring Securityのさまざまなセキュリティ機能の順序は、私の理解どおりです(LowestValue、つまり最高の優先順位から最高の値、つまり最低の優先順位)

  1. Ordered.HIGHEST_PRECEDENCE = -2 ^ 31-1
  2. WebSecurityConfigurerAdapter = 100(ドキュメントに記載されている@Order(100)に基づく)
    1. Access_Override_Order = Basic_Auth_Order -2 for セキュリティプロパティ
    2. Access_Override_Order = Basic_Auth_Order -1 for ManagementServerPropertiesBasic_Auth_Order-2 = 2 ^ 31-7
  3. Basic_Auth_Order = Ordered.Lowest_Precendence -5 = 2^31-5
  4. Ordered.LOWEST_PRECEDENCE = 2^31

Question2上記のさまざまなセキュリティ機能の順序に基づいて、管理エンドポイントとアプリケーションの残りの両方のデフォルトルールをオーバーライドする場合は、使用する必要があります

  • SecurityPropertiesACCESS_OVERRIDE_ORDERまたは
  • ManagementServerProperties ACCESS_OVERRIDE_ORDER?

現在SecurityProperties ACCESS_OVERRIDE_ORDERを使用していますが、提案に基づいて ここ ACTUATORを機能させるにはManagementServerProperties ACCESS_OVERRIDE_ORDERを有効にする必要があります。両方を機能させるには、どちらをオーバーライドする必要がありますか?

ありがとう。

11
HopeKing

Q1。質問1:Spring Securityでは、注釈@Order(SecurityProperties.ACCESS_OVERRIDE_ORDER)は正確に何をしますか?

それが何をするかは、引用したドキュメントで詳しく説明されています。

他の自動構成機能を変更せずにアクセスルールをオーバーライドするには、@Order(SecurityProperties.ACCESS_OVERRIDE_ORDER)を使用してWebSecurityConfigurerAdapterタイプの@Beanを追加します。

ただし、@Order(100)を持つWebSecurityConfigurerAdapterはより高い優先度を持ちます。

番号。

この部分_autoconfigured features_に注意する必要があります。 _@EnableAutoConfiguration_の一部である_@SpringBootApplication_を使用すると、多くのことが自動構成され、_100_は自動構成された値ではなく、WebSecurityConfigurerAdapterクラス。

SecurityPropertiesクラスでSpring Securityの自動設定に使用される順序値を見つけることができ、_ACCESS_OVERRIDE_ORDER_の値が最低であることがわかります。つまり、最高の優先順位を取ります。

自動構成はどこですか?

@Order(SecurityProperties.BASIC_AUTH_ORDER)SpringBootWebSecurityConfigurationクラスで使用されていることがわかります。

その後、WebSecurityConfigurerAdapterの注釈@Order(100)が使用されるのはいつですか?

たとえば、_@EnableWebSecurity_を追加して自動構成を無効にすると、値が使用されます。値_100_の優先度が高すぎるため、ケースのカスタムクラスに@Order(SecurityProperties.ACCESS_OVERRIDE_ORDER)アノテーションを追加した方が良いでしょう。

Q2。上記のさまざまなセキュリティ機能の順序に基づいて、管理エンドポイントとアプリケーションの残りの両方のデフォルトルールを上書きする場合、何を使用する必要がありますか

_ManagementServerProperties ACCESS_OVERRIDE_ORDER_を使用します。

優先度が高いため、すべてのエンドポイントのデフォルトルールを上書きする場合は使用する必要があります。 ManagementServerPropertiesクラスを開くと、値がどのように設定されているかを確認できます。

SecurityProperties

_int ACCESS_OVERRIDE_ORDER = SecurityProperties.BASIC_AUTH_ORDER - 2; // 39
int BASIC_AUTH_ORDER = Ordered.LOWEST_PRECEDENCE - 5; // 41
_

ManagementServerProperties

_int BASIC_AUTH_ORDER = SecurityProperties.BASIC_AUTH_ORDER - 5; // 36
int ACCESS_OVERRIDE_ORDER = ManagementServerProperties.BASIC_AUTH_ORDER - 1; // 35
_

コメントでは、_39_は_21474839_を意味し、読みやすくするために最初の6桁を省略しました。

10
Sanghyun Lee

SecurityProperties @OrderアノテーションのACCESS_OVERRIDE_ORDER定数を定義しなくなりました。ただし、Spring Bootでは、アプリケーションでセキュリティの詳細が定義されなくなったため、セキュリティの@Configurationクラスに@Orderアノテーションは必要なく、削除できます。

4
Ajay Khetan