Package net.shibboleth.idp.plugin.authn.webauthn.impl

# Class PopulateWebAuthnAuthenticationContext

java.lang.Object
net.shibboleth.shared.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.plugin.authn.webauthn.impl.PopulateWebAuthnAuthenticationContext

All Implemented Interfaces:
  `Component`, `DestructableComponent`, `InitializableComponent`, `ProfileAction`, `Aware`, `MessageSource`, `MessageSourceAware`, `Action`

public class PopulateWebAuthnAuthenticationContext extends AbstractAuthenticationAction
An action to create (or lookup) the `WebAuthnAuthenticationContext` and populate with the username found from the username lookup strategy. The username can be `null` if `usernameRequiredPredicate` is false, otherwise it must be present.

Event:
  `EventIds.PROCEED_EVENT_ID`, `EventIds.INVALID_PROFILE_CTX`
Postcondition:
  See above.

## Field Summary

Fields
Modifier and Type
Field
Description
`private Consumer<ProfileRequestContext>`
`contextUpdateConsumer`
Consumer to update the context conditionally.
`private final org.slf4j.Logger`
`log`
Class logger.
`private Function<ProfileRequestContext,String>`
`usernameLookupStrategy`
Lookup strategy for the username.
`private Predicate<ProfileRequestContext>`
`usernameRequiredPredicate`
Is the username required?
`private final Function<ProfileRequestContext,WebAuthnAuthenticationContext>`
`webauthnAuthContextCreationStrategy`
Strategy used to locate or create the `WebAuthnAuthenticationContext` to populate.

## Constructor Summary

Constructors
Constructor
Description
`PopulateWebAuthnAuthenticationContext()`
Constructor.

## Method Summary

Modifier and Type
Method
Description
`protected void`
`doExecute(ProfileRequestContext profileRequestContext, AuthenticationContext authenticationContext)`
`void`
`setContextUpdateConsumer(Consumer<ProfileRequestContext> consumer)`
Set a consumer that updates any part of the profile request context.
`void`
`setUsernameLookupStrategy(Function<ProfileRequestContext,String> strategy)`
Set the username lookup strategy.
`void`
`setUsernameRequired(boolean flag)`
Set a flag to determine if the username is required or not.
`void`
`setUsernameRequiredPredicate(Predicate<ProfileRequestContext> predicate)`
Set a strategy to determine if the username is required or not.

### Methods inherited from class net.shibboleth.idp.authn.AbstractAuthenticationAction

`doExecute, doPreExecute, doPreExecute, setAuthenticationContextLookupStrategy`

### Methods inherited from class net.shibboleth.idp.profile.AbstractProfileAction

`doExecute, 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, ensureHttpServletRequest, ensureHttpServletResponse, execute, getHttpServletRequest, getHttpServletRequestSupplier, getHttpServletResponse, getHttpServletResponseSupplier, getLogPrefix, isPreExecuteCalled, setHttpServletRequestSupplier, setHttpServletResponseSupplier`

### Methods inherited from class net.shibboleth.shared.component.AbstractInitializableComponent

`checkComponentActive, checkSetterPreconditions, destroy, doDestroy, doInitialize, ifDestroyedThrowDestroyedComponentException, ifInitializedThrowUnmodifiabledComponentException, ifNotInitializedThrowUninitializedComponentException, 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.shared.component.InitializableComponent

`initialize, isInitialized`

## Field Details

### log

@Nonnull private final org.slf4j.Logger log
Class logger.

### webauthnAuthContextCreationStrategy

@Nonnull private final Function<ProfileRequestContext,WebAuthnAuthenticationContext> webauthnAuthContextCreationStrategy
Strategy used to locate or create the `WebAuthnAuthenticationContext` to populate.

### usernameLookupStrategy

@Nonnull private Function<ProfileRequestContext,String> usernameLookupStrategy
Lookup strategy for the username.

### usernameRequiredPredicate

@Nonnull private Predicate<ProfileRequestContext> usernameRequiredPredicate
Is the username required?

### contextUpdateConsumer

@Nonnull private Consumer<ProfileRequestContext> contextUpdateConsumer
Consumer to update the context conditionally. For example, to set `WebAuthnAuthenticationContext.setSecondFactor(boolean)` if we are operating as a second factor.

## Constructor Details

### PopulateWebAuthnAuthenticationContext

public PopulateWebAuthnAuthenticationContext()
Constructor.

## Method Details

### setContextUpdateConsumer

public void setContextUpdateConsumer(@Nonnull Consumer<ProfileRequestContext> consumer)
Set a consumer that updates any part of the profile request context.

Parameters:
  `consumer` - The consumer.

### setUsernameRequired

public void setUsernameRequired(boolean flag)
Set a flag to determine if the username is required or not.

Parameters:
  `flag` - is the username required?

### setUsernameRequiredPredicate

public void setUsernameRequiredPredicate(@Nonnull Predicate<ProfileRequestContext> predicate)
Set a strategy to determine if the username is required or not.

Parameters:
  `predicate` - the predicate to set.

### setUsernameLookupStrategy

public void setUsernameLookupStrategy(@Nonnull Function<ProfileRequestContext,String> strategy)
Set the username lookup strategy.

Parameters:
  `strategy` - lookup strategy

### doExecute

protected void doExecute(@Nonnull ProfileRequestContext profileRequestContext, @Nonnull AuthenticationContext authenticationContext)

Overrides:
  `doExecute` in class `AbstractAuthenticationAction`