Commit e25727ff authored by Phillip Webb's avatar Phillip Webb

Merge pull request #4625 from vpavic/improve-audit-listeners

* pr/4625:
  Move publisher injection to abstract listeners
parents 39077ee5 c05432d2
...@@ -17,6 +17,8 @@ ...@@ -17,6 +17,8 @@
package org.springframework.boot.actuate.security; package org.springframework.boot.actuate.security;
import org.springframework.boot.actuate.audit.AuditEvent; import org.springframework.boot.actuate.audit.AuditEvent;
import org.springframework.boot.actuate.audit.listener.AuditApplicationEvent;
import org.springframework.context.ApplicationEventPublisher;
import org.springframework.context.ApplicationEventPublisherAware; import org.springframework.context.ApplicationEventPublisherAware;
import org.springframework.context.ApplicationListener; import org.springframework.context.ApplicationListener;
import org.springframework.security.authentication.event.AbstractAuthenticationEvent; import org.springframework.security.authentication.event.AbstractAuthenticationEvent;
...@@ -32,4 +34,21 @@ import org.springframework.security.authentication.event.AbstractAuthenticationE ...@@ -32,4 +34,21 @@ import org.springframework.security.authentication.event.AbstractAuthenticationE
public abstract class AbstractAuthenticationAuditListener implements public abstract class AbstractAuthenticationAuditListener implements
ApplicationListener<AbstractAuthenticationEvent>, ApplicationEventPublisherAware { ApplicationListener<AbstractAuthenticationEvent>, ApplicationEventPublisherAware {
private ApplicationEventPublisher publisher;
@Override
public void setApplicationEventPublisher(ApplicationEventPublisher publisher) {
this.publisher = publisher;
}
protected ApplicationEventPublisher getPublisher() {
return this.publisher;
}
protected void publish(AuditEvent event) {
if (getPublisher() != null) {
getPublisher().publishEvent(new AuditApplicationEvent(event));
}
}
} }
...@@ -17,6 +17,8 @@ ...@@ -17,6 +17,8 @@
package org.springframework.boot.actuate.security; package org.springframework.boot.actuate.security;
import org.springframework.boot.actuate.audit.AuditEvent; import org.springframework.boot.actuate.audit.AuditEvent;
import org.springframework.boot.actuate.audit.listener.AuditApplicationEvent;
import org.springframework.context.ApplicationEventPublisher;
import org.springframework.context.ApplicationEventPublisherAware; import org.springframework.context.ApplicationEventPublisherAware;
import org.springframework.context.ApplicationListener; import org.springframework.context.ApplicationListener;
import org.springframework.security.access.event.AbstractAuthorizationEvent; import org.springframework.security.access.event.AbstractAuthorizationEvent;
...@@ -32,4 +34,21 @@ import org.springframework.security.access.event.AbstractAuthorizationEvent; ...@@ -32,4 +34,21 @@ import org.springframework.security.access.event.AbstractAuthorizationEvent;
public abstract class AbstractAuthorizationAuditListener implements public abstract class AbstractAuthorizationAuditListener implements
ApplicationListener<AbstractAuthorizationEvent>, ApplicationEventPublisherAware { ApplicationListener<AbstractAuthorizationEvent>, ApplicationEventPublisherAware {
private ApplicationEventPublisher publisher;
@Override
public void setApplicationEventPublisher(ApplicationEventPublisher publisher) {
this.publisher = publisher;
}
protected ApplicationEventPublisher getPublisher() {
return this.publisher;
}
protected void publish(AuditEvent event) {
if (getPublisher() != null) {
getPublisher().publishEvent(new AuditApplicationEvent(event));
}
}
} }
...@@ -20,8 +20,6 @@ import java.util.HashMap; ...@@ -20,8 +20,6 @@ import java.util.HashMap;
import java.util.Map; import java.util.Map;
import org.springframework.boot.actuate.audit.AuditEvent; import org.springframework.boot.actuate.audit.AuditEvent;
import org.springframework.boot.actuate.audit.listener.AuditApplicationEvent;
import org.springframework.context.ApplicationEventPublisher;
import org.springframework.security.authentication.event.AbstractAuthenticationEvent; import org.springframework.security.authentication.event.AbstractAuthenticationEvent;
import org.springframework.security.authentication.event.AbstractAuthenticationFailureEvent; import org.springframework.security.authentication.event.AbstractAuthenticationFailureEvent;
import org.springframework.security.authentication.event.AuthenticationSuccessEvent; import org.springframework.security.authentication.event.AuthenticationSuccessEvent;
...@@ -37,15 +35,8 @@ public class AuthenticationAuditListener extends AbstractAuthenticationAuditList ...@@ -37,15 +35,8 @@ public class AuthenticationAuditListener extends AbstractAuthenticationAuditList
private static final String WEB_LISTENER_CHECK_CLASS = "org.springframework.security.web.authentication.switchuser.AuthenticationSwitchUserEvent"; private static final String WEB_LISTENER_CHECK_CLASS = "org.springframework.security.web.authentication.switchuser.AuthenticationSwitchUserEvent";
private ApplicationEventPublisher publisher;
private WebAuditListener webListener = maybeCreateWebListener(); private WebAuditListener webListener = maybeCreateWebListener();
@Override
public void setApplicationEventPublisher(ApplicationEventPublisher publisher) {
this.publisher = publisher;
}
private static WebAuditListener maybeCreateWebListener() { private static WebAuditListener maybeCreateWebListener() {
if (ClassUtils.isPresent(WEB_LISTENER_CHECK_CLASS, null)) { if (ClassUtils.isPresent(WEB_LISTENER_CHECK_CLASS, null)) {
return new WebAuditListener(); return new WebAuditListener();
...@@ -83,12 +74,6 @@ public class AuthenticationAuditListener extends AbstractAuthenticationAuditList ...@@ -83,12 +74,6 @@ public class AuthenticationAuditListener extends AbstractAuthenticationAuditList
"AUTHENTICATION_SUCCESS", data)); "AUTHENTICATION_SUCCESS", data));
} }
private void publish(AuditEvent event) {
if (this.publisher != null) {
this.publisher.publishEvent(new AuditApplicationEvent(event));
}
}
private static class WebAuditListener { private static class WebAuditListener {
public void process(AuthenticationAuditListener listener, public void process(AuthenticationAuditListener listener,
......
...@@ -20,26 +20,17 @@ import java.util.HashMap; ...@@ -20,26 +20,17 @@ import java.util.HashMap;
import java.util.Map; import java.util.Map;
import org.springframework.boot.actuate.audit.AuditEvent; import org.springframework.boot.actuate.audit.AuditEvent;
import org.springframework.boot.actuate.audit.listener.AuditApplicationEvent;
import org.springframework.context.ApplicationEventPublisher;
import org.springframework.security.access.event.AbstractAuthorizationEvent; import org.springframework.security.access.event.AbstractAuthorizationEvent;
import org.springframework.security.access.event.AuthenticationCredentialsNotFoundEvent; import org.springframework.security.access.event.AuthenticationCredentialsNotFoundEvent;
import org.springframework.security.access.event.AuthorizationFailureEvent; import org.springframework.security.access.event.AuthorizationFailureEvent;
/** /**
* Default implementation of {@link AuthorizationAuditListener}. * Default implementation of {@link AbstractAuthorizationAuditListener}.
* *
* @author Dave Syer * @author Dave Syer
*/ */
public class AuthorizationAuditListener extends AbstractAuthorizationAuditListener { public class AuthorizationAuditListener extends AbstractAuthorizationAuditListener {
private ApplicationEventPublisher publisher;
@Override
public void setApplicationEventPublisher(ApplicationEventPublisher publisher) {
this.publisher = publisher;
}
@Override @Override
public void onApplicationEvent(AbstractAuthorizationEvent event) { public void onApplicationEvent(AbstractAuthorizationEvent event) {
if (event instanceof AuthenticationCredentialsNotFoundEvent) { if (event instanceof AuthenticationCredentialsNotFoundEvent) {
...@@ -67,10 +58,4 @@ public class AuthorizationAuditListener extends AbstractAuthorizationAuditListen ...@@ -67,10 +58,4 @@ public class AuthorizationAuditListener extends AbstractAuthorizationAuditListen
"AUTHORIZATION_FAILURE", data)); "AUTHORIZATION_FAILURE", data));
} }
private void publish(AuditEvent event) {
if (this.publisher != null) {
this.publisher.publishEvent(new AuditApplicationEvent(event));
}
}
} }
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment