Merge pull request #4625 from vpavic/improve-audit-listeners
* pr/4625: Move publisher injection to abstract listeners
This commit is contained in:
commit
e25727ffae
|
|
@ -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
|
||||||
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 @@
|
||||||
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;
|
||||||
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;
|
||||||
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
|
||||||
|
|
||||||
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
|
||||||
"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;
|
||||||
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
|
||||||
"AUTHORIZATION_FAILURE", data));
|
"AUTHORIZATION_FAILURE", data));
|
||||||
}
|
}
|
||||||
|
|
||||||
private void publish(AuditEvent event) {
|
|
||||||
if (this.publisher != null) {
|
|
||||||
this.publisher.publishEvent(new AuditApplicationEvent(event));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue