Skip to content

Support high assurance level#545

Open
bheesham wants to merge 3 commits into
mozilla-iam:masterfrom
bheesham:assurance-levels-support-high
Open

Support high assurance level#545
bheesham wants to merge 3 commits into
mozilla-iam:masterfrom
bheesham:assurance-levels-support-high

Conversation

@bheesham

@bheesham bheesham commented Jul 6, 2026

Copy link
Copy Markdown
Contributor

Jira: IAM-1989


tl;dr: for some RPs we need to support a stricter policy for MFA. This PR adds support for HIGH.

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Adds support for a stricter authenticator assurance policy (HIGH) in the accessRules Auth0 Action, along with Terraform secret wiring and test updates, to enable RPs to require stronger MFA characteristics.

Changes:

  • Introduces an AAL→AAI mapping (including HIGH) and updates decision logic to select the highest AAL across matching authorization rules.
  • Updates Duo configuration handling to select credentials based on the required AAL.
  • Adjusts Jest tests to reflect new HIGH behavior (Duo treated as satisfying HARDWARE).

Reviewed changes

Copilot reviewed 3 out of 3 changed files in this pull request and generated 4 comments.

File Description
tf/actions/accessRules.js Adds HIGH AAL support, mapping/selection logic, and Duo config selection changes.
tf/tests/accessRules.test.js Updates tests for the new HIGH behavior expectations.
tf/actions.tf Renames/splits Duo Action secrets into medium/high variants for the Action runtime.
Comments suppressed due to low confidence (1)

tf/actions/accessRules.js:382

  • For LDAP (strategy === "ad") users that require Duo, enableDuo is set but aai remains empty. That causes MEDIUM requirements to fail the AAI check (since AAI_MAPPING["MEDIUM"] is non-empty), denying access before the Duo challenge can be triggered. If enabling Duo is intended to satisfy MEDIUM, add the relevant AAI indicator(s) when enableDuo is set.
    // Allow certain LDAP service accounts to fake their MFA. For all other LDAPi accounts, enforce MFA
    if (event.connection.strategy === "ad") {
      // No support for HIGH or MAXIMUM assurance levels.
      if (mfaBypassAccounts.includes(event.user.email)) {
        console.log(
          `LDAP service account (${event.user.email}) is allowed to bypass MFA`
        );
        aai.add("2FA");
      } else {
        enableDuo = true;
        console.log(
          `duosecurity: ${event.user.email} is in LDAP and requires 2FA check`
        );
      }

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment thread tf/actions/accessRules.js
Comment thread tf/actions/accessRules.js
Comment thread tf/actions/accessRules.js Outdated
Comment thread tf/actions/accessRules.js
@bheesham
bheesham force-pushed the assurance-levels-support-high branch from 93e70b5 to 3116de6 Compare July 6, 2026 20:17
bheesham added 3 commits July 13, 2026 10:57
This commit redoes a bit of the logic and expands the test case to allow
`HARDWARE`.

Jira: IAM-1989
This commit configures the Duo client differently, depending on the
level of assurance we want. The client we use has different policies
applied, restricting the kind of access required.

Jira: IAM-1989
@bheesham
bheesham force-pushed the assurance-levels-support-high branch from 3116de6 to e00eede Compare July 13, 2026 14:57
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants