Commit c05432d2 authored by Vedran Pavic's avatar Vedran Pavic Committed by Phillip Webb

Move publisher injection to abstract listeners

Push up publisher injection from AuthenticationAuditListener and
AuthorizationAuditListener to the abstract superclasses.

Closes gh-4625
parent 39077ee5
...@@ -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