Spring:使用 Spring Security 为执行器端点配置安全性

Posted

技术标签:

【中文标题】Spring:使用 Spring Security 为执行器端点配置安全性【英文标题】:Spring: Configure security for actuator endpoints with Spring Security 【发布时间】:2018-08-05 05:57:08 【问题描述】:

是否可以使用 Spring Security 以通用方式为 Spring 应用程序的执行器端点配置安全性?

根据https://github.com/spring-projects/spring-boot/issues/8646,我需要在我的自定义 Spring Security 配置中执行此操作。

但是假设我在我的应用程序中(在端口 8080 上)有一个针对 /info 的自定义请求映射,并且在端口 8081 上启用了执行器信息端点。我如何在 Spring Security 中区分这两者?

【问题讨论】:

【参考方案1】:

我刚刚发现 Spring Boot 2 明确解决了这个问题。 见https://docs.spring.io/spring-boot/docs/current-SNAPSHOT/reference/htmlsingle/#production-ready-endpoints-security

【讨论】:

@adrhc 不确定您的意思。上面的链接对我有用。这是当前版本的链接:docs.spring.io/spring-boot/docs/current/reference/htmlsingle/…【参考方案2】:

是的,这是可能的,但不是特别明显。在WebSecurityConfigurerAdapter 的扩展中,您可以注入执行器端点的集合:

@Inject
private List<AbstractEndpointMvcAdapter<? extends Endpoint<?>>> actuatorEndpoints;

然后在覆盖configureHttpSecurity(HttpSecurity http) 时,您可以使用每个执行器端点的getPath() 成员传递给http 参数上可用的.requestMatchers(forPortAndPath(managementPort, actuatorPath)) 构建器。

【讨论】:

谢谢!实际上,就我而言,我只是想忽略 Spring Security 中的管理端点,因此拥有 @Value("$management.port:8081").requestMatchers(request -&gt; request.getServerPort() == managementPort) 就可以了

以上是关于Spring:使用 Spring Security 为执行器端点配置安全性的主要内容,如果未能解决你的问题,请参考以下文章

使用 spring-session 和 spring-cloud-security 时,OAuth2ClientContext (spring-security-oauth2) 不会保留在 Redis

未调用 Spring Security j_spring_security_check

Spring security:Spring security 如何在 SessionRegistry 中注册新会话?

在使用 Oauth、SAML 和 spring-security 的多租户的情况下从 spring-security.xml 中获取错误

Spring-Security:升级到 Spring-Security 4.1 后,用户名发送为空以进行登录

Spring mvc / security:从spring security中排除登录页面