Skip to main content
Drupal is a registered trademark of Dries Buytaert
Release: Drupal 11.4.6 Update released for Drupal core (11.4.6)! Release: Drupal 10.6.16 Update released for Drupal core (10.6.16)! Release: Drupal 12.0.0-alpha1 First alpha version released for Drupal core (12.0.0-alpha1). Release: AI (Artificial Intelligence) 1.5.0-rc3 New release candidate for module ai (1.5.0-rc3). Release: User Registration Link Pop Up 1.2.5 Minor update available for module url_popup (1.2.5). Release: User Registration Link Pop Up 1.2.4 Minor update available for module url_popup (1.2.4). Release: Smart Image Optimizer 1.0.1 Minor update available for module smart_image_optimizer (1.0.1). Release: Content Freshness Report 1.0.3 Minor update available for module content_freshness_report (1.0.3). Usage Milestone: Menu Condition Module menu_condition crossed 1,000 active installs. Module Revived: EzContent API - Enhanced De-coupled CMS Experience 2.3.9 Module ezcontent_api updated after 15 months of inactivity (2.3.9).

This module adds two-factor authentication using TOTP to Drupal. It includes features like QR code enrollment, backup codes, and a themeable setup page, with options for delegated admin management and direct login support.

Two-factor authentication (TOTP) for Drupal, with QR code enrollment, one-time
backup codes, delegated admin management, and a themeable setup page.

Features

  • TOTP enrollment with an inline SVG QR code
    (no third-party API calls) and a manual-entry fallback
    (issuer, account name, secret key).
  • One-time backup codes, issued once at enrollment and
    shown exactly once; only their hash is stored.
  • Configurable OTP parameters: code length (6–8 digits),
    validity period, and clock-drift tolerance window.
  • Self-service reset via a single-use, time-limited
    emailed link for users who have lost access to their authenticator.
  • Enforced enrollment: optionally redirect any
    authenticated user who has not configured 2FA yet to the setup page
    before they can use the rest of the site.
  • Delegated admin management: a dedicated
    manage user 2fa permission lets support staff view every
    user's 2FA status and reset, enable, or disable it, without granting
    administer site configuration or
    administer users.
  • REST/JSON login support:
    /user/login?_format=json (and other serialization formats)
    requires a valid mfa_token in the request body once 2FA is
    enabled for the account, without duplicating any of core's
    credential or flood-control logic.
  • Encrypted secrets at rest using AES-256-GCM, keyed by
    a value from settings.php (recommended) or an
    auto-generated key stored in State.
  • Themeable setup page: an opt-out card-style CSS design
    that can be turned off in favor of plain Drupal form styling, or
    overridden entirely via the
    auth_login_plus_setup_page theme hook.
  • Drush command to reset a user's enrollment from the
    command line.

Configuration

  1. Enable the module.
  2. Go to

    Administration » Configuration » People »
    Authenticator Login Plus settings

    (/admin/config/people/auth_login_plus/settings)
    and review the following settings:
    • Enable two-factor authentication
      the global kill switch. When disabled, no OTP challenge is issued
      anywhere on the site.
    • Use the custom setup page design
      toggles the bundled card-style CSS on the setup, login-challenge,
      and status pages. The copy-to-clipboard button continues to work
      either way.
    • Issuer name
      the name shown in the authenticator app. If left blank, the site
      name is used by default.
    • One-time code parameters
      configure the code length, validity period, and clock-drift
      tolerance.
    • User self-service
      configure whether users can enable or disable 2FA themselves,
      whether backup codes are issued, how many are generated, whether
      the emailed self-service reset link is available, and where users
      are redirected after a successful challenge.
    • Enforcement
      force users who have not configured 2FA to the setup page and
      configure the message shown when this happens.
  3. Set a permanent
    encryption key
    in settings.php before going to production.
  4. Grant the manage user 2fa permission to the role that should
    be able to support end users, such as a helpdesk or support role.
    See Permissions.

Drush commands

drush auth-login-plus:reset <uid>;

Resets the given user's enrollment, including their secret and backup codes,
from the command line. This has the same effect as the admin overview's
“Reset” action.

Depends on

Dependencies of the latest stable release

No dependencies recorded for this project.

Required by

Tracked projects that depend on this one

No tracked projects depend on this one yet.

Activity

Tracked releases
2
Tracked since
Jul 2026
Latest release
1 month ago
Releases (12 mo)
2 ▲ from 0
Maintenance
Active

Releases

Version Type Core Release date
1.0.0-alpha1 Pre-release 10–11 Jul 20, 2026
1.x-dev Dev 10–11 Jul 20, 2026