Skip to content

Multi-factor authentication

A multi-factor authentication is an extra layer of security for ProAuth designed to ensure that you're the only person who can access your account, even if someone knows your password.

E-Mail

E-Mail TwoFactor Authentication is a security verification procedure, which is triggered through a user logging into a website, software or application. In the log-in process, the user is automatically sent an E-Mail containing a unique numeric code. This 'token-code' is then inputted by the individual, verifying themselves as the user logging into the online account.

Create new TwoFactor

Steps to create a new IDP:

  • Navigate to the ProAuth Admin UI and login with a user with in minimum is a SubscriptionAdmin
  • Navigate to TwoFactor Instances and click on Create TwoFactor Instance
  • Choose the IDP Type email
  • Enable the flag Active
  • Choose the proper Subscription
  • Click Save

Create Email TwoFactor

Configure new TwoFactor

After the creation of the TwoFactor instance in the step before, it's now necessary to configure the TwoFactor. Invalid TwoFactors aren't available in ProAuth.

Steps to complete the configuration of the TwoFactor:

  • Open the TwoFactor in the extended edit view
  • Configure the mandatory service options (details below)
  • In order for the TwoFactor instance to be applied, assign the TwoFactor to the required Tenants, IDPs, Client Applications or ProAuth Users

Edit Email TwoFactor

Configure mandatory Options, if they are not already provided by the ProAuth base service settings:

  • Set the EMailSenderAddress
  • Set the MailServerConfig

Edit Email Server settings

MailServerConfiguration sample data for SMTP Server:

json
{
    "MailType": "SMTP",
    "Host": "<smtp-host-address>",
    "Port": 465,
    "EnableSSL": true,
    "UserName": "<smtp-username>",
    "Password": "<smtp-password>",
    "Timeout": 20000
}

MailServerConfiguration sample data for Microsoft365:

json
{
    "MailType": "M365",
    "ClientId": "<aad-app-clientid>",
    "ClientSecret": "<aad-app-clientsecret>",
    "TenantId": "<aad-app-tenantid>",
    "UserId": "<aad-user-objectid>"
}

SMS

SMS TwoFactor Authentication is a security verification procedure, which is triggered through a user logging into a website, software or application. In the log-in process, the user is automatically sent an SMS to their mobile number containing a unique numeric code. This 'token-code' is then inputted by the individual, verifying themselves as the user logging into the online account.

Create new TwoFactor

Steps to create a new TwoFactor:

  • Navigate to the ProAuth Admin UI and login with a user with in minimum is a SubscriptionAdmin
  • Navigate to TwoFactor Instances and click on Create TwoFactor Instance
  • Choose the TwoFactor Type ecall
  • Enable the flag Active
  • Choose the proper Subscription
  • Click Save

Create eCall TwoFactor

Configure new TwoFactor

After the creation of the TwoFactor instance in the step before, it's now necessary to configure the TwoFactor. Invalid TwoFactors aren't available in ProAuth.

Steps to complete the configuration of the TwoFactor:

  • Open the TwoFactor in the extended edit view
  • Configure the mandatory service options (details below)
  • In order for the TwoFactor instance to be applied, assign the TwoFactor to the required Tenants, IDPs, Client Applications or ProAuth Users

Edit eCall TwoFactor

Configure mandatory Service Options:

  • Set the ECallAccountName
  • Set the ECallAccountPassword
  • Set the ECallAccountFromNumber

You can get the Service Option values from your eCall account.

Create new TwoFactor

Steps to create a new TwoFactor:

  • Navigate to the ProAuth Admin UI and login with a user with in minimum is a SubscriptionAdmin
  • Navigate to TwoFactor Instances and click on Create TwoFactor Instance
  • Choose the TwoFactor Type email
  • Enable the flag Active
  • Choose the proper Subscription
  • Click Save

Create Twilio TwoFactor

Configure new TwoFactor

After the creation of the TwoFactor instance in the step before, it's now necessary to configure the TwoFactor. Invalid TwoFactors aren't available in ProAuth.

Steps to complete the configuration of the TwoFactor:

  • Open the TwoFactor in the extended edit view
  • Configure the mandatory service options (details below)
  • In order for the TwoFactor instance to be applied, assign the TwoFactor to the required Tenants, IDPs, Client Applications or ProAuth Users

Edit Twilio TwoFactor

Configure mandatory Service Options:

  • Set the TwilioAccountSid
  • Set the TwilioAuthToken
  • Set the TwilioSmsFromNumber

You can get the Service Option values from your Twilio account.

FIDO

::: note Not yet supported :::

Brute Force Protection for Second Factor

ProAuth provides brute force protection for second factor (2FA) verification. Two mechanisms are available: temporary locking and progressive throttling. These are configured per TwoFactor instance and protect against automated attacks on the verification step.

INFO

Second factor brute force protection is independent from UserStore brute force protection. They use separate counters and separate configuration. For first factor (password) protection, see UserStore Brute Force Protection.

Temporary Locking

When enabled, second factor verification is temporarily locked after a configurable number of consecutive failed attempts. While locked, all verification attempts are rejected. The lock is automatically lifted after the configured duration.

Configuration

OptionDescriptionDefault
TwoFactorTemporaryLockEnabledEnable or disable temporary locking.false
TwoFactorTemporaryLockThresholdFailed attempts before lock is applied.10
TwoFactorTemporaryLockDurationSecondsLock duration in seconds.3600 (1 hour)

Progressive Throttling

Throttling introduces a progressively increasing delay before each verification response. The delay grows exponentially with consecutive failed attempts.

Configuration

OptionDescriptionDefault
TwoFactorThrottlingEnabledEnable or disable progressive throttling.false
TwoFactorThrottlingBaseDelayMsBase delay in milliseconds after first failed attempt.1000
TwoFactorThrottlingMaxDelayMsMaximum delay cap in milliseconds.30000

Delay Formula

The delay is calculated using exponential backoff:

$$\text{delay} = \min!\bigl(\text{BaseDelayMs} \times 2^{(\text{failedAttempts} - 1)},; \text{MaxDelayMs}\bigr)$$

Best Practices

OptionRecommended Value
TwoFactorThrottlingEnabledtrue
TwoFactorThrottlingBaseDelayMs1000
TwoFactorThrottlingMaxDelayMs30000
TwoFactorTemporaryLockEnabledtrue
TwoFactorTemporaryLockThreshold5 to 10
TwoFactorTemporaryLockDurationSeconds300 to 900

TIP

Enable both throttling and temporary locking for defense in depth. Throttling provides gradual slowdown while temporary locking stops persistent attacks.

Code Resend Protection

ProAuth also limits how frequently verification codes can be resent to prevent flooding. This is configured via TwoFactorMaxCodeResends and TwoFactorCodeResendCooldownSeconds options per TwoFactor instance.

Monitoring

ProAuth exposes OpenTelemetry metrics for second factor security events:

MetricDescription
twofactor_temporary_lock_totalTemporary locks applied

Configure alerts for elevated lock rates to detect potential attacks or misconfigured thresholds.

Configuration via Management API

Options are configured per TwoFactor instance through the Management API:

http
PUT /api/v1/options
Content-Type: application/json

{
  "name": "TwoFactorThrottlingEnabled",
  "value": "true",
  "applyToTwoFactorInstanceId": "<twofactor-instance-id>"
}
Option NameTypeExample Value
TwoFactorTemporaryLockEnabledbooleantrue
TwoFactorTemporaryLockThresholdinteger10
TwoFactorTemporaryLockDurationSecondsinteger3600
TwoFactorThrottlingEnabledbooleantrue
TwoFactorThrottlingBaseDelayMsinteger1000
TwoFactorThrottlingMaxDelayMsinteger30000

CAPTCHA Protection

In addition to throttling and locking, ProAuth supports CAPTCHA challenges for second factor verification. CAPTCHA adds an additional layer of protection against automated attacks on the 2FA verification step.

Supported Providers

ProAuth integrates with three privacy-focused CAPTCHA providers. All providers are GDPR-compliant.

ProviderDescription
Cloudflare TurnstileFree, privacy-focused, invisible challenges. Default provider.
hCaptchaPrivacy-focused alternative to reCAPTCHA.
Friendly CaptchaEU-based, proof-of-work based, no cookies.

For detailed provider information and setup instructions, see UserStore CAPTCHA Protection.

Activation Modes

CAPTCHA for second factor verification supports three activation modes:

ModeDescription
DisabledCAPTCHA is never shown during 2FA verification. Default.
AlwaysCAPTCHA is required on every verification attempt.
AfterFailuresCAPTCHA is required after consecutive failed verification attempts.

Configuration

CAPTCHA for 2FA is configured per TwoFactor instance. Register with your chosen CAPTCHA provider to obtain credentials.

OptionDescriptionDefault
TwoFactorCaptchaActivationModeWhen CAPTCHA is required: Disabled, Always, or AfterFailures.Disabled
TwoFactorCaptchaFailureThresholdFailed verification attempts before CAPTCHA is required (for AfterFailures mode).3
TwoFactorCaptchaProviderProvider: Turnstile, HCaptcha, or FriendlyCaptcha.Turnstile
TwoFactorCaptchaSiteKeyPublic site key from your CAPTCHA provider.
TwoFactorCaptchaSecretKeySecret key for server-side verification.

Configuration via Management API

http
PUT /api/v1/options
Content-Type: application/json

{
  "name": "TwoFactorCaptchaActivationMode",
  "value": "AfterFailures",
  "applyToTwoFactorInstanceId": "<twofactor-instance-id>"
}
Option NameTypeExample Value
TwoFactorCaptchaActivationModestringAfterFailures
TwoFactorCaptchaFailureThresholdinteger3
TwoFactorCaptchaProviderstringTurnstile
TwoFactorCaptchaSiteKeystring0x4AAA...
TwoFactorCaptchaSecretKeystring0x4AAA...

Integration with Other Protections

CAPTCHA operates alongside throttling and temporary locking:

  1. Temporary lock — if active, reject immediately
  2. CAPTCHA — if required, verify challenge before code verification
  3. Throttling — apply progressive delay
  4. Code verification — validate the 2FA code
  5. Counter update — update failed attempts, check lock thresholds

TIP

For high-security deployments, enable CAPTCHA in AfterFailures mode with a threshold of 2–3, combined with throttling and temporary locking. This provides defense in depth against automated 2FA bypass attempts.