← Back to plugin index

Airlock 2FA Self-Service Approval Step

Description

This step allows using Airlock 2FA to approve operations in protected self-services flows, such as user data changes or registrations of additional devices. Typically, this step is configured between the step where a change is initiated and the step where the change is persisted.

Type name
Airlock2FASelfServiceApprovalStep
Class
com.airlock.iam.selfservice.application.configuration.step.Airlock2FASelfServiceApprovalStepConfig
May be used by
License-Tags
Airlock2FA
Properties
Message Provider (messageProvider)
Description
Creates the message that will be displayed on the user's device.
Attributes
Plugin-Link
Mandatory
Assignable plugins
Enable Push-to-All (enablePushToAll)
Description
If Push-to-All for One-Touch is enabled, device selection is never required for One-Touch. Push notifications are sent to all devices of a user and approval can be given on any of the devices.

The combination of Push-to-All and "Lock User on Fraud" could have undesired effects, because users might report fraud in legitimate use-cases.

Attributes
Boolean
Optional
Default value
false
Enable Short-Lived Online QR Codes (enableShortLivedOnlineQrCodes)
Description

Whether to enable short-lived Online QR Codes. Unlike regular Online QR Codes, these are refreshed regularly, allowing for shorter individual validities.

Shorter validities enhance security, since forwarding a QR code to victims and tricking them to scan the QR code becomes more difficult if the available time window is small.

Attributes
Boolean
Optional
Default value
false
QR Code Validity [s] (shortLivedQrCodeValidity)
Description

The maximum amount of time in seconds for which an Online QR Code is valid after it is first displayed to the end user (ignoring latency). This duration includes the time defined for the validity overlap. It only limits the time for scanning the QR code, not for the confirmation or approval afterwards.

Security Notice: The validity duration represents the attack window. Choosing a small validity makes attacks more difficult, in cases where an attacker attempts to forward a QR code to a victim for scanning.

This setting is only active if short-lived Online QR Codes are enabled.

Attributes
Integer
Optional
Default value
10
QR Code Validity Overlap [s] (shortLivedQrCodeValidityOverlap)
Description

Defines the duration in seconds during which the previously displayed QR Code is still valid after being replaced by the next QR code in sequence.

This provides time for pending requests to complete and ensures that a valid QR code is displayed at every moment in time, provided that there are no network or performance issues.

The validity overlap must meet the following criteria:

  • It must be smaller than half the overall validity of the QR code.
  • It must be larger than the Loginapp UI polling interval (1s) plus the network latency (IAM backend → Loginapp UI plus Mobile Device → Futurae Backend).
    Note that the polling interval may differ for custom user interfaces.

This setting is only active if short-lived Online QR Codes are enabled.

Attributes
Integer
Optional
Default value
3
Session Timeout [s] (shortLivedSessionTimeout)
Description

Maximum duration in seconds during which short-lived Online QR Codes are displayed until a session timeout occurs.

This setting is used exclusively for short-lived Online QR Codes. It has no effect if short-lived Online QR Codes are disabled.

Attributes
Integer
Optional
Default value
60
Airlock 2FA Settings (airlock2faSettings)
Description
Settings of Airlock 2FA.
Attributes
Plugin-Link
Mandatory
Assignable plugins
Redirect URI (mobileOnlyRedirectUri)
Description
The URI used on iOS to switch from the authentication app (Airlock 2FA or compatible) back to the main app where the authentication was initiated. This value is not applicable if the authentication is directly performed by the main app. Furthermore, this value is ignored on Android, where the back stack mechanism is used instead.
Attributes
String
Optional
Scheme Override (mobileOnlySchemeOverride)
Description
Allows to override the scheme of the mobile authentication URI which is returned by the approval step. The scheme of the authentication URI determines, which app to open on the mobile device for authentication. This is useful when migrating from one authentication app (such as Airlock 2FA) to a different authentication app. For example, during a migration, this step can be used to support the previous authentication app by overriding the scheme of the new app with the scheme of the previous app.
Attributes
String
Optional
Validation RegEx: ^[a-zA-Z][a-zA-Z0-9\+\-\.]*$
Example
airlock2fa
Example
OneApp-1
Approval Factors (approvalFactors)
Description

Priority list of all factors that can be used in this approval step. Only factors that are in this list can be used. The factors are offered in the configured order.

One-Touch and Online QR Code must come before all other factors. It is recommended to include at least one offline factor.

Available factors:

  • One-Touch: a push message is sent to the user's mobile app, where it must be approved. This is an online factor and will require device selection if the user has multiple devices.
  • Online QR Code: a QR code is displayed in the browser, which has to be scanned by a mobile app and approved there. This is an online factor. No prior device selection is required.
  • Offline QR Code: a QR code is displayed in the browser which has to be scanned by a mobile app or hardware token. The device displays a code (OTP) that must be entered manually in the browser. This is an offline factor and will require device selection if the user has multiple devices.
  • Passcode: the device (mobile app or hardware token) generates a time-dependent code (OTP) that has to be entered manually. This is an offline factor. No prior device selection is required.
  • Mobile Only: the approval is handled directly by the mobile app. This is an online factor. No prior device selection is required. There is no fallback from this factor to other factors or vice-versa. Therefore, the only use case for combining this with other factors is in transaction approval, where the factor previously used for authentication determines whether mobile-only or another factor will be used. Since there is no way to use any factors configured after Mobile Only, it should always be configured as the last factor.

AuthTokenId:
The AuthTokenId identifies the device and factor that was used during the authentication and links it to the approval process. It is used to ensure that, for certain flows, the same device must perform the approval. The AuthTokenId is evaluated only for transaction approval. It has no effect on other flow types.

When the AuthTokenId is present in the transaction approval flow and contains the factor Mobile Only:

  • and the Mobile Only factor is configured in this approval step: the Mobile Only factor will be enforced.
  • and the Mobile Only factor is not configured in this approval step: any of the configured factors may be used.

Attributes
String-List
Optional
Default value
[One-Touch, Offline QR Code, Mobile Only]
Respect Cooldown Period (respectCooldownPeriod)
Description

If enabled, devices in cooldown cannot be used for approval.

If disabled, this step ignores the "Cooldown Period" for new devices configured in the "Airlock 2FA Settings". This is typically used for approval steps that protect low-risk operations, which can also be performed with devices in cooldown.

If no "Cooldown Period" is defined, enabling this property has no effect.

Attributes
Boolean
Optional
Default value
true
Include Device Usage Information (includeDeviceUsageInformation)
Description

If enabled, the device choices provided for device selection include usage information for each device: the time of enrollment ("enrolledAt") and the time of last use ("lastUsedAt").

The information is revealed to anyone completing the flow steps preceding the device selection. Enabling this property in flows accessible without prior strong authentication may lead to unwanted information disclosure.

Attributes
Boolean
Optional
Default value
false
Interactive Goto Targets (interactiveGotoTargets)
Description
Manually selectable Goto targets. These are steps to which the user can chose to jump when this is the current flow step.
Attributes
Plugin-List
Optional
Assignable plugins
Dynamic Step Activations (dynamicStepActivations)
Description
Steps that can be dynamically activated while in this step.
Attributes
Plugin-List
Optional
Assignable plugins
Skip Condition (skipCondition)
Description

If this condition is configured and fulfilled, the step is skipped and the flow execution continues with the subsequent step.

Attributes
Plugin-Link
Optional
Assignable plugins
Pre Condition (preCondition)
Description
This step is executed only if the configured pre condition is fulfilled. If the condition is not fulfilled, the step and flow execution fail immediately. The step is not initialized and no step method can be called. If no condition is configured, the behavior is that of a fulfilled pre condition.
Attributes
Plugin-Link
Optional
Assignable plugins
Requires Activation (requiresActivation)
Description
If enabled, this step is only executed if it has been dynamically activated from a previous step. If it has not been activated, the step is skipped (equivalent to when the skip condition is fulfilled).
Attributes
Boolean
Optional
Default value
false
Tags On Success (tagsOnSuccess)
Description
This step grants these tags if it completes successfully.
Attributes
Plugin-List
Optional
Assignable plugins
Step ID (stepId)
Description
ID of this step. This is only needed if this step is the target of a goto action or if this step requires activation.
Attributes
Plugin-Link
Optional
Assignable plugins
On Failure Gotos (onFailureGotos)
Description

If the step fails (no retry) and a goto target for the error code is defined here, the flow does not fail and instead a "goto" to the specified target step is executed. Note that even when the "goto" is executed, any error codes that are considered a failed factor attempt will still increment the "failed attempts" counter, and may lead to the user being locked. Therefore, this may still result in a failed flow.

A typical application of this feature is switching to an alternative authentication factor step, if an external service (e.g. Futurae server, SMS gateway) is not available (error code EXTERNAL_SERVICE_UNAVAILABLE with "Strict Counting" disabled, which will not increment the "failed attempts" counter). Other error codes can be found in the IAM REST documentation, in both the general "Error Codes" section and in the documentation of specific endpoints.

Attributes
Plugin-Map
Optional
Assignable plugins
Custom Response Attributes (customResponseAttributes)
Description

A list of custom attributes that are returned in the REST response in addition to the standard attributes the step already returns. The custom attributes defined here are only returned if the step result does not lead to an error response.

Custom attributes are added to the response when a step is initialized and when actions are executed on the step. They will therefore be available in the response leading to this step, and in any responses from endpoints specific to this step. For non-interactive steps, custom attributes are accumulated and added to the response leading to the next interactive step.

Custom attributes are not returned for 'retrieve' endpoints.

Attributes
Plugin-List
Optional
Assignable plugins
YAML Template (with default values)

type: Airlock2FASelfServiceApprovalStep
id: Airlock2FASelfServiceApprovalStep-xxxxxx
displayName: 
comment: 
properties:
  airlock2faSettings:
  approvalFactors: [One-Touch, Offline QR Code, Mobile Only]
  customFailureResponseAttributes:
  customResponseAttributes:
  dynamicStepActivations:
  enablePushToAll: false
  enableShortLivedOnlineQrCodes: false
  includeDeviceUsageInformation: false
  interactiveGotoTargets:
  messageProvider:
  mobileOnlyRedirectUri:
  mobileOnlySchemeOverride:
  onFailureGotos:
  preCondition:
  requiresActivation: false
  respectCooldownPeriod: true
  shortLivedQrCodeValidity: 10
  shortLivedQrCodeValidityOverlap: 3
  shortLivedSessionTimeout: 60
  skipCondition:
  stepId:
  tagsOnSuccess: