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

# Class AddUserName

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.plugin.authn.webauthn.impl.AbstractWebAuthnAction<WebAuthnRegistrationContext>
net.shibboleth.idp.plugin.authn.webauthn.admin.impl.AddUserName

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

public class AddUserName extends AbstractWebAuthnAction<WebAuthnRegistrationContext>
An action to generate or lookup a WebAuthn user.name. the user.name is a human-palatable identifier for a user account. It is intended only for display by the authenticator, for example, aiding the user in determining the difference between user accounts with similar displayNames. This can be different than the internal username used within the IdP to store credentials against.

Used during the registration process, added to PublicKeyCredentialCreationOptions.

Event:
  `WebAuthnRegistrationEventIds.INVALID_REGISTRATION`
Precondition:

      ProfileRequestContext.getSubcontext(WebAuthnRegistrationContext.class) != null

Postcondition:
  a user.name is added to the registration context

## Field Summary

Fields
Modifier and Type
Field
Description
`private final org.slf4j.Logger`
`log`
Class logger.
`private WebAuthnCredentialRepository`
`repository`
The credential repository to use.
`private String`
`username`
The stashed internal username.
`private Function<ProfileRequestContext,String>`
`userNameLookupStrategy`
Strategy used to lookup or create the user.name.

## Constructor Summary

Constructors
Constructor
Description
`AddUserName()`
Constructor.

## Method Summary

Modifier and Type
Method
Description
`protected void`
`doExecute(ProfileRequestContext profileRequestContext, WebAuthnRegistrationContext context)`
Performs this WebAuthn authentication action using the supplied WebAuthn context.
`protected void`
`doInitialize()`
`protected boolean`
`doPreExecute(ProfileRequestContext profileRequestContext, WebAuthnRegistrationContext context)`
Performs this authentication action's pre-execute step.
`void`
`setUserNameLookupStrategy(Function<ProfileRequestContext,String> strategy)`
Set the strategy used to lookup or create the WebAuthn user.name.

### Methods inherited from class net.shibboleth.idp.plugin.authn.webauthn.impl.AbstractWebAuthnAction

`doExecute, doPreExecute, enhancedCredentialRecord, getAaguidMetadata, getAaguidService, getAuthenticatorMetadata, getCredentialRepository, getFidoMetadataService, getWebAuthnClient, setAaguidService, setCredentialRepository, setFidoMetadataService, setWebAuthnClient, setWebAuthnContextLookupStrategy`

### 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, 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.

### userNameLookupStrategy

@NonnullAfterInit private Function<ProfileRequestContext,String> userNameLookupStrategy
Strategy used to lookup or create the user.name.

### username

@NonnullBeforeExec private String username
The stashed internal username.

### repository

@NonnullAfterInit private WebAuthnCredentialRepository repository
The credential repository to use.

## Constructor Details

### AddUserName

public AddUserName()
Constructor.

## Method Details

### doInitialize

protected void doInitialize() throws ComponentInitializationException

Overrides:
  `doInitialize` in class `AbstractWebAuthnAction<WebAuthnRegistrationContext>`
Throws:
  `ComponentInitializationException`

### setUserNameLookupStrategy

public void setUserNameLookupStrategy(@Nonnull Function<ProfileRequestContext,String> strategy)
Set the strategy used to lookup or create the WebAuthn user.name.

Parameters:
  `strategy` - the strategy

### doPreExecute

protected boolean doPreExecute(@Nonnull ProfileRequestContext profileRequestContext, @Nonnull WebAuthnRegistrationContext context)
Performs this authentication action's pre-execute step. Default implementation just returns true.

Overrides:
  `doPreExecute` in class `AbstractWebAuthnAction<WebAuthnRegistrationContext>`
Parameters:
  `profileRequestContext` - the current IdP profile request context
  `context` - the WebAuthn context
Returns:
  true iff execution should continue

### doExecute

protected void doExecute(@Nonnull ProfileRequestContext profileRequestContext, @Nonnull WebAuthnRegistrationContext context)
Performs this WebAuthn authentication action using the supplied WebAuthn context. Implementations should override this method.

Overrides:
  `doExecute` in class `AbstractWebAuthnAction<WebAuthnRegistrationContext>`
Parameters:
  `profileRequestContext` - the current IdP profile request context
  `context` - the WebAuthn context