Portal Community

MFA Policy Levels

Passport supports MFA enforcement at multiple levels. Policies are evaluated in order — the most restrictive wins:

LevelSetting LocationDescription
GlobalTenant configurationMFA required for all users in the tenant, regardless of which app they access
ConsumerConsumer registrationMFA required when accessing a specific application — overrides global if stricter
Role-basedRole configurationMFA required for users with specific roles (e.g., all admin users must use MFA)
Step-upConsumer registrationMFA required on each new session to this consumer, even if Passport session exists

Supported MFA Methods

TOTP

Time-based One-Time Password. Compatible with Google Authenticator, Authy, Microsoft Authenticator, and any TOTP app. 6-digit code valid for 30 seconds.

SMS OTP

One-time code sent via SMS to the user's registered phone number. 6-digit code, 10-minute validity. Rate-limited to prevent abuse.

FIDO2 / WebAuthn

Hardware security keys (YubiKey, etc.) and platform authenticators (Windows Hello, Touch ID). Phishing-resistant — the strongest MFA option.

Email OTP

One-time code sent to the user's registered email address. Fallback option when other methods are unavailable. 10-minute validity.

Configuring MFA on a Consumer

// Consumer registration with MFA configuration
{
  "consumerKey": "finance-erp",
  "protocol": "SAML2",
  "requireMfa": true,
  "mfaPolicy": {
    "stepUp": true,
    "allowedMethods": ["totp", "fido2"],
    "gracePerioMinutes": 0,
    "exemptRoles": []
  }
}

// requireMfa: true — MFA is required before assertion is issued
// stepUp: true — MFA is required on each new Passport session (not just first login)
// allowedMethods — restrict which MFA methods are accepted for this consumer
// gracePerioMinutes — allow minutes after password auth before MFA is enforced (0 = immediate)
// exemptRoles — roles that bypass MFA for this consumer (use carefully)

MFA in OIDC — ACR Values

OIDC provides the acr_values parameter in the authorization request to request a specific authentication context. Passport supports the following ACR values:

ACR ValueMeaning
urn:passport:authn:passwordPassword authentication only
urn:passport:authn:mfaPassword + any MFA method
urn:passport:authn:mfa:totpPassword + TOTP specifically
urn:passport:authn:mfa:fido2Password + FIDO2/WebAuthn
// Request MFA in OIDC authorization request
GET /passport/authorize
  ?response_type=code
  &client_id=finance-app
  &scope=openid%20roles
  &acr_values=urn:passport:authn:mfa
  &...

// The resulting id_token will include:
{
  "acr": "urn:passport:authn:mfa:totp",
  "amr": ["pwd", "otp"]
}

Step-Up Authentication Flow

Step-up authentication forces re-verification of the user's MFA even when an existing Passport session is valid. This is appropriate for high-security applications (financial systems, HR systems, admin consoles).

1

User has existing Passport session (already logged in)

User navigates to the finance ERP. Passport detects the existing session cookie.

2

Step-up required

Consumer has stepUp: true. Passport checks whether the current session has a recent MFA verification. If the last MFA was > 0 minutes ago (grace period), step-up is triggered.

3

MFA Challenge (without re-entering password)

Passport presents only the MFA challenge — the user is not asked for their password again since the session is still valid.

4

Assertion Issued

After successful MFA, Passport updates the session's MFA timestamp and issues the assertion to the consumer.

Never Exempt Admin Roles from MFA

The exemptRoles configuration should never include administrative roles. Privileged accounts are high-value targets — compromising an admin account without MFA protection can result in complete tenant takeover. If your admin tool cannot support MFA, reconsider using it.