Skip to content

Multi-Factor Authentication (MFA)

Multi-Factor Authentication (MFA) adds an extra layer of security by requiring a time-based one-time password (TOTP) in addition to your username and password.

  • TOTP-based authentication (RFC 6238)
  • Compatible with Google Authenticator, Microsoft Authenticator, Authy
  • 10 single-use backup codes
  • Admin-configurable policies (None/Optional/Required)
  • QR code setup for easy enrollment

    1. Log in to RAMP
    2. Click your profile icon (top right)
    3. Select Settings -> Security
    4. Click Enable Multi-Factor Authentication
  1. Open your authenticator app:

    • Google Authenticator (iOS/Android)
    • Microsoft Authenticator (iOS/Android)
    • Authy (iOS/Android/Desktop)

    Scan the QR code displayed on screen. Your app will generate a 6-digit code.

  2. Enter the 6-digit code from your authenticator app and click Verify and Enable MFA. If successful, you’ll see 10 backup codes.

  3. Critical: Save your backup codes in a secure location!

    • Print and store in a safe place
    • Save to a password manager
    • Store in an encrypted file

    Backup codes are single-use — each code can only be used once.

    1. Log out of RAMP
    2. Log in with your username and password
    3. Enter the 6-digit code from your authenticator app
    4. Click Verify

  1. Enter username and password
  2. Click Sign In
  3. Enter 6-digit code from authenticator app
  4. Click Verify

If you don’t have access to your authenticator app:

  1. Enter username and password
  2. Click Use Backup Code instead of entering TOTP
  3. Enter one of your backup codes
  4. Code is consumed and won’t work again

  1. Navigate to Settings -> Security
  2. Click Disable Multi-Factor Authentication
  3. Enter current 6-digit MFA code to confirm
  4. Click Disable

Administrators can configure MFA policies for the entire system or individual users.

PolicyDescriptionUser Experience
NoneMFA disabledUsers cannot enable MFA
OptionalUsers can chooseMFA enrollment available in Settings
RequiredAll users must use MFAForced enrollment on next login
  1. Navigate to Admin -> Users
  2. Click on a user
  3. Click MFA Policy
  4. Select policy:
    • None — User cannot use MFA
    • Optional — User can enable if desired (default)
    • Required — User must configure MFA
  5. Click Save

When a user’s policy is set to Required:

  1. User logs in with username/password
  2. User is redirected to MFA setup page
  3. User must complete MFA setup before accessing RAMP
  4. User cannot skip or dismiss the setup

If a user loses access to their authenticator app:

  1. Navigate to Admin -> Users
  2. Click on the user
  3. Click Reset MFA
  4. Confirm the action
  5. User’s MFA is disabled and they can re-enroll

If a user uses all backup codes:

  1. Navigate to Admin -> Users
  2. Click on the user
  3. Click Regenerate Backup Codes
  4. 10 new backup codes are generated
  5. Provide codes to user securely (email, in-person)

EndpointMethodDescription
/_api/auth/mfa/setupPOSTGenerate MFA secret and QR code
/_api/auth/mfa/setup/verifyPOSTVerify and enable MFA
/_api/auth/mfa/disableDELETEDisable MFA (requires OTP)
/_api/auth/mfa/verifyPOSTVerify MFA code during login
EndpointMethodDescription
/_api/users/{id}/mfa-policyPOSTSet user MFA policy
/_api/users/{id}/mfaDELETEReset user MFA
/_api/users/{id}/mfa/backup-codes/regeneratePOSTRegenerate backup codes

Check 1: Verify time sync

  • Authenticator apps rely on accurate device time
  • Ensure your device time is set to automatic
  • Small time differences can cause code mismatches

Check 2: Wait for next code

  • Codes refresh every 30 seconds
  • If you’re near the end of a 30-second window, wait for the next code

Check 3: Use backup code

  • If you have backup codes, use one to log in
  • Then re-enroll MFA with a new QR code

Option 1: Use backup code

  • Each backup code can be used once
  • After login, you can disable and re-enroll MFA

Option 2: Contact administrator

  • Admin can reset your MFA
  • You’ll need to re-enroll with a new QR code

Try manual entry:

  1. Click “Manual Entry” on MFA setup page
  2. Copy the secret key
  3. In authenticator app, choose “Manual Entry”
  4. Enter:
    • Account name: RAMP - your@email.com
    • Secret key: (paste from RAMP)
    • Type: Time-based
  5. Save in authenticator app

Check 1: Verify code is unused — each backup code works only once

Check 2: Check for typos — backup codes are case-sensitive, ensure no extra spaces

Check 3: Contact administrator — admin can regenerate new backup codes (old codes will be invalidated)


  1. Secure backup codes — Store in password manager, keep encrypted copy, don’t share via insecure channels
  2. Use trusted authenticator apps — Google Authenticator, Microsoft Authenticator, Authy (with cloud backup)
  3. Enable device lock — Protect your phone/tablet with PIN/biometric
  4. Don’t share MFA codes — NEVER share 6-digit codes with anyone; admins will NEVER ask for MFA codes
  1. Require MFA for admins — Set policy to “Required” for Administrator roles to reduce risk of account compromise
  2. Monitor MFA enrollment — Track which users have MFA enabled and encourage adoption
  3. Audit MFA resets — Review audit logs for MFA reset actions and verify legitimacy of reset requests
  4. Educate users — Provide MFA enrollment training and share this guide with users

RAMP uses:

  • TOTP Algorithm: RFC 6238 (Time-Based One-Time Password)
  • Hash Function: HMAC-SHA1
  • Code Length: 6 digits
  • Time Step: 30 seconds
  • Secret Length: 160 bits (32 base32 characters)
  • Backup Codes: 10 codes, 8 characters each, SHA256 hashed
  • Generated using cryptographically secure random number generator
  • Stored as SHA256 hashes (not reversible)
  • Single-use enforcement via database flag
  • Regeneration invalidates all previous codes
  • MFA secrets encrypted using ASP.NET Core Data Protection API
  • Encrypted at rest in database
  • Decrypted only during verification

RAMP accepts codes from:

  • Current time window (30 seconds)
  • Previous time window (30 seconds)
  • Next time window (30 seconds)

Total tolerance: plus or minus 30 seconds


ProviderMFA Support
RAMP NativeBuilt-in TOTP MFA
OIDCUse IdP’s MFA (Entra ID Conditional Access, etc.)
LDAPUse RAMP MFA or configure LDAP server MFA
Windows AuthUse AD policies or smart card auth
ADFSUse ADFS MFA providers (Azure MFA, Duo, etc.)

Yes! Scan the QR code with multiple authenticator apps during initial setup.

  1. Use backup code to log in
  2. Disable MFA
  3. Re-enroll with new device

Or, if using Authy with cloud backup:

  1. Install Authy on new phone
  2. Restore from cloud
  3. Codes automatically available

No. MFA secrets are encrypted and administrators cannot view your TOTP codes or backup codes (they’re hashed).

Yes. TOTP codes are generated locally on your device using time-based algorithm. No internet required.

Not currently. RAMP supports TOTP-based MFA only. Hardware token support is planned for future release.