1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 package org.acegisecurity.event.authorization;
17
18 import org.apache.commons.logging.Log;
19 import org.apache.commons.logging.LogFactory;
20
21 import org.springframework.context.ApplicationEvent;
22 import org.springframework.context.ApplicationListener;
23
24
25
26
27
28
29
30
31
32
33
34
35 public class LoggerListener implements ApplicationListener {
36
37
38 private static final Log logger = LogFactory.getLog(LoggerListener.class);
39
40
41
42 public void onApplicationEvent(ApplicationEvent event) {
43 if (event instanceof AuthenticationCredentialsNotFoundEvent) {
44 AuthenticationCredentialsNotFoundEvent authEvent = (AuthenticationCredentialsNotFoundEvent) event;
45
46 if (logger.isWarnEnabled()) {
47 logger.warn("Security interception failed due to: " + authEvent.getCredentialsNotFoundException()
48 + "; secure object: " + authEvent.getSource() + "; configuration attributes: "
49 + authEvent.getConfigAttributeDefinition());
50 }
51 }
52
53 if (event instanceof AuthorizationFailureEvent) {
54 AuthorizationFailureEvent authEvent = (AuthorizationFailureEvent) event;
55
56 if (logger.isWarnEnabled()) {
57 logger.warn("Security authorization failed due to: " + authEvent.getAccessDeniedException()
58 + "; authenticated principal: " + authEvent.getAuthentication()
59 + "; secure object: " + authEvent.getSource()
60 + "; configuration attributes: " + authEvent.getConfigAttributeDefinition());
61 }
62 }
63
64 if (event instanceof AuthorizedEvent) {
65 AuthorizedEvent authEvent = (AuthorizedEvent) event;
66
67 if (logger.isInfoEnabled()) {
68 logger.info("Security authorized for authenticated principal: " + authEvent.getAuthentication()
69 + "; secure object: " + authEvent.getSource() + "; configuration attributes: "
70 + authEvent.getConfigAttributeDefinition());
71 }
72 }
73
74 if (event instanceof PublicInvocationEvent) {
75 PublicInvocationEvent authEvent = (PublicInvocationEvent) event;
76
77 if (logger.isInfoEnabled()) {
78 logger.info("Security interception not required for public secure object: " + authEvent.getSource());
79 }
80 }
81 }
82 }