Spring Boot + Spring 安全授权成功审核



有没有人设法让带有Spring Security的Spring Boot来处理AuthorizedEvent(即用于审计日志(?

我已经实现了以下应用程序事件侦听器:

@Component
public class AuthorizationSuccessAudit implements ApplicationListener<AuthorizedEvent> {
    private static Logger auditLogger = LoggerFactory.getLogger("audit");
    @Override
    public void onApplicationEvent(AuthorizedEvent event) {
        auditLogger.info("Authorization granted to user: {} - {}", event.getAuthentication().getName(), event.getConfigAttributes());
    }
}

并有一个用@PreAuthorize注释的测试 MVC 终结点。我期待春季安全补助金会出现在日志上。虽然这适用于我使用的所有其他事件(AuthenticationSuccessEvent,AuthenticationFailureEvent,AbstractAuthenticationFailureEvent(,但它不适用于AuthorizedEvent。

我尝试浏览 Spring Boot 源代码,似乎此事件未在 AuthorizationAuditListener.java 中处理,这可能是一个错误还是我以错误的方式对其进行了黑客攻击?

根据 Spring Boot

文档,请使用 Spring Boot Actuator(Spring Boot 的审计框架(,并提供您自己的 AbstractAuthorizationAuditListener 实现。

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-actuator</artifactId>
    <version>1.3.0.RELEASE</version>
</dependency>

还有类似的东西..

class TestAuthorizationAuditListener extends AbstractAuthorizationAuditListener { 
  @Override 
  public void setApplicationEventPublisher(ApplicationEventPublisher publisher) { 
  } 
  @Override 
  public void onApplicationEvent(AbstractAuthorizationEvent event) { 
  } 
 } 

看起来弹簧启动无法意识到这里要处理事件。

尝试注释方法,以便 spring 知道您要在此处处理事件

@EventListener(value = {AuthorizedEvent.class})
public void onApplicationEvent(AuthorizedEvent event) {
        auditLogger.info("Authorization granted to user: {} - {}", event.getAuthentication().getName(), event.getConfigAttributes());
    }

授权成功后,应触发授权事件。 确保FilterSecurityInterceptor 应设置 setPublishAuthorizationSuccess true

相关内容

  • 没有找到相关文章

最新更新