Package net.shibboleth.idp.authn.impl
Class AbstractAuditingValidationAction
java.lang.Object
net.shibboleth.utilities.java.support.component.AbstractInitializableComponent
org.opensaml.profile.action.AbstractProfileAction
org.opensaml.profile.action.AbstractConditionalProfileAction
net.shibboleth.idp.profile.AbstractProfileAction
net.shibboleth.idp.authn.AbstractAuthenticationAction
net.shibboleth.idp.authn.AbstractValidationAction
net.shibboleth.idp.authn.impl.AbstractAuditingValidationAction
- All Implemented Interfaces:
PrincipalSupportingComponent
,Component
,DestructableComponent
,InitializableComponent
,ProfileAction
,Aware
,MessageSource
,MessageSourceAware
,Action
- Direct Known Subclasses:
ValidateCredentials
,ValidateDuoAuthAPI
,ValidateDuoWebResponse
,ValidateExternalAuthentication
,ValidateFunctionResult
,ValidateRemoteUser
,ValidateUserAgentAddress
Base class for validation actions that includes new audit logging support.
This is not great design, but embedding the existing audit action classes as fields is by far the simplest way to reuse that logic without getting caught up in the vagaries of the individual validator's logic.
- Since:
- 4.3.0
-
Field Summary
FieldsModifier and TypeFieldDescriptionprivate Function<ProfileRequestContext,
AuditContext> Strategy used to locate or create theAuditContext
to populate.private PopulateAuditContext
Optional audit extraction action.private RequestContext
The Spring RequestContext to operate on.private WriteAuditLog
Optional audit output action. -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionprotected void
doAudit
(ProfileRequestContext profileRequestContext) Do audit extraction and output.protected Event
doExecute
(RequestContext springRequestContext, ProfileRequestContext profileRequestContext) Spring-aware actions can override this method to fully control the execution of an Action by the Web Flow engine.protected AuditContext
getAuditContext
(ProfileRequestContext profileRequestContext) Create or locate theAuditContext
via the defined strategy.getAuditFields
(ProfileRequestContext profileRequestContext) Subclasses can override this method to supply additional audit fields to store.protected void
recordFailure
(ProfileRequestContext profileRequestContext) Record a failed authentication attempt against the configured counter.protected void
recordSuccess
(ProfileRequestContext profileRequestContext) Record a successful authentication attempt against the configured counter.void
Set the strategy used to locate theAuditContext
associated with a givenProfileRequestContext
.void
Sets an audit context population action to run.void
setWriteAuditLogAction
(WriteAuditLog action) Sets an audit output action to run.Methods inherited from class net.shibboleth.idp.authn.AbstractValidationAction
addDefaultPrincipals, buildAuthenticationResult, doPreExecute, getClassifiedErrors, getCleanupHook, getMetricName, getRequesterLookupStrategy, getResponderLookupStrategy, getResultCachingPredicate, getSubject, getSupportedPrincipals, handleError, handleError, handleWarning, populateSubject, recordFailure, recordSuccess, setAddDefaultPrincipals, setClassifiedMessages, setCleanupHook, setMetricName, setRequesterLookupStrategy, setResponderLookupStrategy, setResultCachingPredicate, setSupportedPrincipals
Methods inherited from class net.shibboleth.idp.authn.AbstractAuthenticationAction
doExecute, doExecute, doPreExecute, setAuthenticationContextLookupStrategy
Methods inherited from class net.shibboleth.idp.profile.AbstractProfileAction
execute, getBean, getBean, getMessage, getMessage, getMessage, getParameter, getParameter, getProfileContextLookupStrategy, getRequestContext, getResult, setMessageSource, setProfileContextLookupStrategy
Methods inherited from class org.opensaml.profile.action.AbstractConditionalProfileAction
getActivationCondition, setActivationCondition
Methods inherited from class org.opensaml.profile.action.AbstractProfileAction
doPostExecute, doPostExecute, execute, getHttpServletRequest, getHttpServletRequestSupplier, getHttpServletResponse, getHttpServletResponseSupplier, getLogPrefix, setHttpServletRequest, setHttpServletRequestSupplier, setHttpServletResponse, setHttpServletResponseSupplier
Methods inherited from class net.shibboleth.utilities.java.support.component.AbstractInitializableComponent
destroy, doDestroy, doInitialize, initialize, isDestroyed, isInitialized
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
Methods inherited from interface net.shibboleth.utilities.java.support.component.InitializableComponent
initialize, isInitialized
-
Field Details
-
auditContextCreationStrategy
Strategy used to locate or create theAuditContext
to populate. -
populateAuditContextAction
Optional audit extraction action. -
writeAuditLogAction
Optional audit output action. -
requestContext
The Spring RequestContext to operate on.
-
-
Constructor Details
-
AbstractAuditingValidationAction
public AbstractAuditingValidationAction()Constructor.
-
-
Method Details
-
setAuditContextCreationStrategy
public void setAuditContextCreationStrategy(@Nonnull Function<ProfileRequestContext, AuditContext> strategy) Set the strategy used to locate theAuditContext
associated with a givenProfileRequestContext
.- Parameters:
strategy
- lookup strategy
-
setPopulateAuditContextAction
Sets an audit context population action to run.- Parameters:
action
- optional action to use to populate audit context- Since:
- 4.3.0
-
setWriteAuditLogAction
Sets an audit output action to run.- Parameters:
action
- optional action to use to write to audit log- Since:
- 4.3.0
-
doExecute
protected Event doExecute(@Nonnull RequestContext springRequestContext, @Nonnull ProfileRequestContext profileRequestContext) Spring-aware actions can override this method to fully control the execution of an Action by the Web Flow engine.Alternatively they may override
AbstractProfileAction.doExecute(ProfileRequestContext)
and access Spring information via aSpringRequestContext
attached to the profile request context.The default implementation attaches the Spring Web Flow request context to the profile request context tree to "narrow" the execution signature to the basic OpenSAML
ProfileAction
interface. After execution, anEventContext
is sought, and used to return a result back to the Web Flow engine. If no context exists, a "proceed" event is signaled.- Overrides:
doExecute
in classAbstractProfileAction
- Parameters:
springRequestContext
- the Spring request contextprofileRequestContext
- a profile request context- Returns:
- a Web Flow event produced by the action
-
recordSuccess
Record a successful authentication attempt against the configured counter. Records nothing if the metrics registry is not installed into the runtime.- Overrides:
recordSuccess
in classAbstractValidationAction
- Parameters:
profileRequestContext
- profile request context
-
recordFailure
Record a failed authentication attempt against the configured counter. Records nothing if the metrics registry is not installed into the runtime.- Overrides:
recordFailure
in classAbstractValidationAction
- Parameters:
profileRequestContext
- profile request context
-
getAuditContext
@Nullable protected AuditContext getAuditContext(@Nonnull ProfileRequestContext profileRequestContext) Create or locate theAuditContext
via the defined strategy.- Parameters:
profileRequestContext
- profile request context- Returns:
- the audit context
-
doAudit
Do audit extraction and output.- Parameters:
profileRequestContext
- profile request context
-
getAuditFields
@Nullable @NonnullElements protected Map<String,String> getAuditFields(@Nonnull ProfileRequestContext profileRequestContext) Subclasses can override this method to supply additional audit fields to store.- Parameters:
profileRequestContext
- profile request context- Returns:
- audit fields
-