Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/370.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java @顺序(SecurityProperty.ACCESS\u OVERRIDE\u Order)与Spring Security中的ManagementServerProperties.ACCESS\u OVERRIDE\u Order_Java_Spring_Spring Mvc_Spring Security_Spring Boot Actuator - Fatal编程技术网

Java @顺序(SecurityProperty.ACCESS\u OVERRIDE\u Order)与Spring Security中的ManagementServerProperties.ACCESS\u OVERRIDE\u Order

Java @顺序(SecurityProperty.ACCESS\u OVERRIDE\u Order)与Spring Security中的ManagementServerProperties.ACCESS\u OVERRIDE\u Order,java,spring,spring-mvc,spring-security,spring-boot-actuator,Java,Spring,Spring Mvc,Spring Security,Spring Boot Actuator,问题1:在Spring Security中,具体的功能是什么 @Order(securityproperty.ACCESS\u OVERRIDE\u Order) Spring文档说明了以下内容,但我不确定自己是否理解得很清楚 要在不更改任何其他自动配置功能的情况下覆盖访问规则,请添加具有@Order(SecurityProperties.access\u override\u Order)的WebSecurityConfigureAdapter类型的@Bean 根据我的理解,Spring se

问题1:在Spring Security中,具体的功能是什么

@Order(securityproperty.ACCESS\u OVERRIDE\u Order)

Spring文档说明了以下内容,但我不确定自己是否理解得很清楚

要在不更改任何其他自动配置功能的情况下覆盖访问规则,请添加具有
@Order(SecurityProperties.access\u override\u Order)
的WebSecurityConfigureAdapter类型的@Bean

根据我的理解,Spring security中各种安全功能的顺序如下(最低值,即最高优先级到最高值,即最低优先级)

  • 有序。最高优先级
    =-2^31-1
  • WebSecurityConfigureAdapter=100(基于文档中提到的@Order(100))
  • Access\u Override\u Order=Basic\u Auth\u Order-2
    用于安全属性
  • ManagementServerProperties的访问\覆盖\顺序=基本\验证\顺序-1
    Basic\u Auth\u Order-2
    =2^31-7
  • Basic\u Auth\u Order=Ordered.lower\u predennce-5=2^31-5
  • Ordered.lower\u优先级=2^31
  • 问题2 根据上述各种安全功能的顺序,如果我想覆盖管理端点和应用程序其余部分的默认规则,我应该使用

    • SecurityProperties访问\u覆盖\u顺序或
    • ManagementServerProperties访问\u覆盖\u顺序
    我目前使用的是
    SecurityProperties访问\u覆盖\u顺序
    ,但基于让执行器工作的建议,我需要启用
    ManagementServerProperties访问\u覆盖\u顺序
    。如果我希望两者都工作,我应该覆盖哪一个

    谢谢。

    Q1。问题1:在Spring安全性中,注释
    @Order(securityproperty.ACCESS\u OVERRIDE\u Order)
    到底做了什么? 它的作用在您引用的文档中有很好的解释

    要在不更改任何其他自动配置功能的情况下覆盖访问规则,请添加具有
    @Order(SecurityProperties.access\u override\u Order)
    的WebSecurityConfigureAdapter类型的@Bean

    但是具有
    @Order(100)
    Web安全配置适配器具有更高的优先级。

    没有

    您应该小心这部分
    自动配置的功能
    。使用
    @EnableAutoConfiguration
    这是
    @SpringBootApplication
    的一部分,很多东西都是自动配置的,
    100
    不是自动配置的值,而是
    WebSecurityConfigurerAdapter
    类上的硬编码值

    您可以在
    SecurityProperties
    类中找到用于自动配置Spring Security的顺序值,您可以发现
    ACCESS\u OVERRIDE\u order
    的值是最低的,这意味着它具有最高的优先级

    它们在哪里自动确认?

    您可以发现
    @Order(securityproperty.BASIC\u AUTH\u Order)
    用于
    SpringBootWebSecurityConfiguration

    那么什么时候使用
    websecurityConfigureAdapter
    的注释
    @Order(100)

    例如,如果通过添加
    @EnableWebSecurity
    禁用自动配置,则将使用该值。由于值
    100
    的优先级太高,因此最好将
    @Order(SecurityProperties.ACCESS\u OVERRIDE\u Order)
    注释放入案例中的自定义类中

    问题2。根据以上各种安全功能的顺序,如果我想覆盖管理端点和应用程序其余部分的默认规则,我应该使用什么 使用
    ManagementServerProperties访问\u覆盖\u顺序

    它具有更高的优先级,因此如果要覆盖所有端点的默认规则,则必须使用它。如果打开
    ManagementServerProperties
    类,您可以看到这些值是如何设置的

    securityproperty中

    int ACCESS_OVERRIDE_ORDER = SecurityProperties.BASIC_AUTH_ORDER - 2; // 39
    int BASIC_AUTH_ORDER = Ordered.LOWEST_PRECEDENCE - 5; // 41
    
    int BASIC_AUTH_ORDER = SecurityProperties.BASIC_AUTH_ORDER - 5; // 36
    int ACCESS_OVERRIDE_ORDER = ManagementServerProperties.BASIC_AUTH_ORDER - 1; // 35
    
    ManagementServerProperties中

    int ACCESS_OVERRIDE_ORDER = SecurityProperties.BASIC_AUTH_ORDER - 2; // 39
    int BASIC_AUTH_ORDER = Ordered.LOWEST_PRECEDENCE - 5; // 41
    
    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注释定义访问覆盖顺序常量。但是,如果应用程序定义了任何安全细节,Spring Boot将不再定义任何安全细节,因此我们不需要security@Configuration类上的@Order注释,并且可以将其删除。

    似乎securityproperty.ACCESS\u OVERRIDE\u Order不再存在。我们可以使用securityproperty.BASIC\u AUTH\u ORDER-2来实现相同的效果?