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

# Class ExtractUsernameFromForm

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.authn.AbstractExtractionAction
net.shibboleth.idp.plugin.authn.webauthn.impl.ExtractUsernameFromForm

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

public class ExtractUsernameFromForm extends AbstractExtractionAction
An action to populate a username into the `BaseWebAuthnContext`.

Event:
  `AuthnEventIds.UNKNOWN_USERNAME`
Precondition:

      ProfileRequestContext.getSubcontext(AuthenticationContext.class) != null

Postcondition:

      BaseWebAuthnContext.getUsername() == null

## Field Summary

Fields
Modifier and Type
Field
Description
`private final org.slf4j.Logger`
`log`
Class logger.
`private String`
`ssoBypassFieldName`
Parameter name for SSO bypass.
`private String`
`usernameFieldName`
Form parameter name to carry username.
`private BaseWebAuthnContext`
`webAuthnContext`
Context to operate on.
`private Function<ProfileRequestContext,BaseWebAuthnContext>`
`webAuthnContextLookupStrategy`
Strategy used to locate the `BaseWebAuthnContext` to operate on.

## Constructor Summary

Constructors
Constructor
Description
`ExtractUsernameFromForm()`
Constructor.

## Method Summary

Modifier and Type
Method
Description
`protected void`
`doExecute(ProfileRequestContext profileRequestContext, AuthenticationContext authenticationContext)`
`protected boolean`
`doPreExecute(ProfileRequestContext profileRequestContext, AuthenticationContext authenticationContext)`
`private String`
`getUsernameFromForm()`
Gets the username from a form submission.
`private String`
`processFormSubmission(ProfileRequestContext profileRequestContext, AuthenticationContext authenticationContext)`
Process the form submission: extract and transform the username, processes do-not-cache instruction.
`void`
`setSSOBypassFieldName(String fieldName)`
Set the SSO bypass parameter name.
`void`
`setUsernameFieldName(String name)`
Sets the name of the form field that carries the username.
`void`
`setWebAuthnContextLookupStrategy(Function<ProfileRequestContext,BaseWebAuthnContext> strategy)`
Set the strategy used to locate the `BaseWebAuthnContext` to operate on.

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

`applyTransforms, setLowercase, setTransforms, setTrim, setUppercase`

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

`doExecute, 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.

### webAuthnContextLookupStrategy

@Nonnull private Function<ProfileRequestContext,BaseWebAuthnContext> webAuthnContextLookupStrategy
Strategy used to locate the `BaseWebAuthnContext` to operate on.

### usernameFieldName

@Nonnull @NotEmpty private String usernameFieldName
Form parameter name to carry username.

### ssoBypassFieldName

@Nonnull @NotEmpty private String ssoBypassFieldName
Parameter name for SSO bypass.

### webAuthnContext

@NonnullBeforeExec private BaseWebAuthnContext webAuthnContext
Context to operate on.

## Constructor Details

### ExtractUsernameFromForm

public ExtractUsernameFromForm()
Constructor.

## Method Details

### setWebAuthnContextLookupStrategy

public void setWebAuthnContextLookupStrategy(@Nonnull Function<ProfileRequestContext,BaseWebAuthnContext> strategy)
Set the strategy used to locate the `BaseWebAuthnContext` to operate on.

Parameters:
  `strategy` - lookup strategy

### setUsernameFieldName

public void setUsernameFieldName(@Nonnull String name)
Sets the name of the form field that carries the username.

Parameters:
  `name` - field name

### setSSOBypassFieldName

public void setSSOBypassFieldName(@Nonnull @NotEmpty String fieldName)
Set the SSO bypass parameter name.

Parameters:
  `fieldName` - the SSO bypass parameter name

### doPreExecute

protected boolean doPreExecute(@Nonnull ProfileRequestContext profileRequestContext, @Nonnull AuthenticationContext authenticationContext)

Overrides:
  `doPreExecute` in class `AbstractAuthenticationAction`

### doExecute

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

Overrides:
  `doExecute` in class `AbstractAuthenticationAction`

### getUsernameFromForm

@Nullable private String getUsernameFromForm()
Gets the username from a form submission.

Returns:
  the raw submitted username

### processFormSubmission

@Nullable private String processFormSubmission(@Nonnull ProfileRequestContext profileRequestContext, @Nonnull AuthenticationContext authenticationContext)
Process the form submission: extract and transform the username, processes do-not-cache instruction.

Parameters:
  `profileRequestContext` - profile request context
  `authenticationContext` - authentication context
Returns:
  the submitted username, after applying any configured transforms