Question1:Spring Securityでは、正確に機能は何ですか
@Order(SecurityProperties.ACCESS_OVERRIDE_ORDER)
Springのドキュメントには以下が記載されていますが、明確に理解しているとはわかりません
他の自動構成機能を変更せずにアクセスルールをオーバーライドするには、
@Order(SecurityProperties.ACCESS_OVERRIDE_ORDER)
を使用してWebSecurityConfigurerAdapterタイプの@Beanを追加します。
Spring Securityのさまざまなセキュリティ機能の順序は、私の理解どおりです(LowestValue、つまり最高の優先順位から最高の値、つまり最低の優先順位)
Ordered.HIGHEST_PRECEDENCE
= -2 ^ 31-1Access_Override_Order = Basic_Auth_Order -2
for セキュリティプロパティAccess_Override_Order = Basic_Auth_Order -1
for ManagementServerPropertiesBasic_Auth_Order-2
= 2 ^ 31-7Basic_Auth_Order = Ordered.Lowest_Precendence -5 = 2^31-5
Ordered.LOWEST_PRECEDENCE = 2^31
Question2上記のさまざまなセキュリティ機能の順序に基づいて、管理エンドポイントとアプリケーションの残りの両方のデフォルトルールをオーバーライドする場合は、使用する必要があります
現在SecurityProperties ACCESS_OVERRIDE_ORDER
を使用していますが、提案に基づいて ここ ACTUATORを機能させるにはManagementServerProperties ACCESS_OVERRIDE_ORDER
を有効にする必要があります。両方を機能させるには、どちらをオーバーライドする必要がありますか?
ありがとう。
@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)
アノテーションを追加した方が良いでしょう。
_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桁を省略しました。
SecurityProperties @OrderアノテーションのACCESS_OVERRIDE_ORDER定数を定義しなくなりました。ただし、Spring Bootでは、アプリケーションでセキュリティの詳細が定義されなくなったため、セキュリティの@Configurationクラスに@Orderアノテーションは必要なく、削除できます。