当前位置: 首页 > 知识库问答 >
问题:

无法保护Spring Boot管理执行器endpoint

刁俊人
2023-03-14

我正在尝试保护Spring Boot执行器endpoint。我的/apiREST接口具有工作安全性,但尝试在内置endpoint上添加安全性似乎不起作用。

我在<code>应用程序中设置了endpoint分组。属性:

management.context-path=/management

我的Java配置中有这个

@Override
protected void configure( HttpSecurity http ) throws Exception
{
    http.csrf().disable();
    http.sessionManagement().sessionCreationPolicy( SessionCreationPolicy.STATELESS );

    http.authorizeRequests()
        .antMatchers( "/api/**" ).hasRole( "READONLY" )
        .antMatchers( "/management/**" ).hasRole( "ADMIN" );


    SecurityConfigurer<DefaultSecurityFilterChain, HttpSecurity> securityConfigurer = new XAuthTokenConfigurer( userDetailsServiceBean() );
    http.apply( securityConfigurer );
}

当我使用浏览器转到<code>/api</code>以下的任何内容时,我得到了预期的403。例如,当转到/management/info时,我看到返回的JSON也是403。

我还尝试将其添加到我的application.properties文件中:

management.security.role=ADMIN

但这也无济于事。

调试输出显示:

2014-05-02 10:15:30 DEBUG [localhost-startStop-1] ExpressionBasedFilterInvocationSecurityMetadataSource - 
Adding web access control expression 'hasRole('ROLE_READONLY')', for Ant [pattern='/api/**']

2014-05-02 10:15:30 DEBUG [localhost-startStop-1] ExpressionBasedFilterInvocationSecurityMetadataSource - 
Adding web access control expression 'hasRole('ROLE_ADMIN')', for Ant [pattern='/management/**']

然后我为什么尝试HTTP GET:

2014-05-02 10:16:39 DEBUG [http-nio-8443-exec-4] AntPathRequestMatcher - Checking match of request : '/management/info'; against '/css/**'
2014-05-02 10:16:39 DEBUG [http-nio-8443-exec-4] AntPathRequestMatcher - Checking match of request : '/management/info'; against '/js/**'
2014-05-02 10:16:39 DEBUG [http-nio-8443-exec-4] AntPathRequestMatcher - Checking match of request : '/management/info'; against '/images/**'
2014-05-02 10:16:39 DEBUG [http-nio-8443-exec-4] AntPathRequestMatcher - Checking match of request : '/management/info'; against '/**/favicon.ico'
2014-05-02 10:16:39 DEBUG [http-nio-8443-exec-4] AntPathRequestMatcher - Checking match of request : '/management/info'; against '/management/info'
2014-05-02 10:16:39 DEBUG [http-nio-8443-exec-4] FilterChainProxy - /management/info has an empty filter list

共有1个答案

谭翰海
2023-03-14

讲述这个故事的日志是:“/Management/info有一个空的过滤器列表”,因为它被显式标记为忽略(/info总是应该可用)。尝试其他执行器endpoint之一,看看它们是否像您期望的那样运行。如果您真的需要保护信息endpoint,您可以设置endpoints.info.sensitive=true(我认为)。

 类似资料:
  • 我尝试在Spring启动中使用执行器endpoint。应用程序运行平稳。我的pom文件如下所示: 这是应用程序的内容。属性文件: 这是我的Spring Boot应用程序的开始: 每当我尝试通过键入连接/health、/Info或/metricsendpoint时http://localhost:8080/health,HTTP请求传输到http://localhost:8080/showMyLog

  • 从spring-boot v1.3迁移到最新的spring-boot v2.2.4后,我们失去了在管理端口下拥有自定义endpoint的能力。 在我们将自定义endpoint声明为: 由于已从Spring引导执行器中删除了MvcEndpoint,现在我们需要执行以下操作: 不幸的是,我们失去了一个为自定义管理endpoint提供自定义根路径的选项(在它出现之前) 对于背部兼容性,我们仍然希望有默认

  • 我正在使用乌班图12.04和日食朱诺。我安装了 ADT 21.0.1 和所有 SDK 包。但是每次我开始日食时,都会有如下错误: 当我尝试运行sdk Manager时,它显示错误: 任何人都可以帮忙吗?

  • 我正在运行spring boot,KafkaListener是我的客户。问题是我们如何从失败的kafka配置中恢复,并避免应用程序在退出代码为0的过程结束时停止。例如,不正确的配置可能是不正确的endpointurl。如果无法访问Kafka服务器,也会出现同样的情况。因此,在任何情况下,KafkaListner进程都不应该杀死服务器。 ontext.java:895应用程序上下文异常:未能启动be

  • 我正在将一个旧的java Spring项目重构为springboot,并以传统的war风格部署它。出于某种原因,我必须坚持传统的web.xml来启动应用程序。多亏了Springboot遗产,我可以通过web.xml实现这一点: 此外,我添加了springboot执行器依赖项。应用程序。属性如下所示: 应用程序可以正常启动,但当我尝试从浏览器访问endpoint时,它只返回一个“401需要完全身份验

  • 如何访问http://localhost:8081/Actuatorendpoint?