Skip to content

[Access] Document AAGUID restrictions and AMR matching for independent MFA - #30252

Merged
ranbel merged 7 commits into
cloudflare:productionfrom
kennyj42:kjohnson/independent-mfa-aaguid-amr
Apr 28, 2026
Merged

[Access] Document AAGUID restrictions and AMR matching for independent MFA#30252
ranbel merged 7 commits into
cloudflare:productionfrom
kennyj42:kjohnson/independent-mfa-aaguid-amr

Conversation

@kennyj42

Copy link
Copy Markdown
Collaborator

Summary

Documents two features added under SHIP-1287 (IdP Agnostic Multi-Factor Authentication) that shipped under RM-27743 but were not included in the initial docs PR (#29713):

  • AAGUID restrictions — Organization-level setting that limits which WebAuthn authenticators users can enroll, backed by a Cloudflare List of type AAGUID.
  • AMR matching — Organization-level setting that skips the independent MFA prompt when the identity provider already performed an equivalent MFA, using the amr claim defined in RFC 8176.

Also adds AAGUID to the list of supported Lists data types and cross-links both new sections from mfa-requirements.mdx.

Related

  • SHIP-1287 (Ann Ming) — Items pending update: AAGUID & AMR matching
  • RM-27743 — Access: Independent MFA supports AAGUID/AMR values (Closed)
  • Original docs PR: [ZT] Independent MFA #29713

Draft / needs review

A few things would benefit from confirmation from the Access team before merging. Flagged inline:

  1. API field names — I used mfa_config.required_aaguids, mfa_config.amr_matching_enabled, and mfa_config.amr_session_duration. The first is explicit in the Required AAGUIDs UI wiki page; the AMR field names are my best guess and may differ in the shipped API.
  2. Dashboard copyRequired AAGUIDs and Trust identity provider MFA (AMR matching) are placeholders; actual UI labels may differ.
  3. AMR value mapping table — I included only values that map to a supported Access authenticator type (security_key / biometrics / totp). Dropped mfa (flagged as open question in the wiki) and values the wiki marks as unsupported.
  4. Dashboard nav path for AAGUID lists — Used Zero Trust > Resources > Lists; please confirm that is where these lists live.

cc @asamborski for a review — happy to iterate on wording or restructure once the API surface is confirmed.

@kennyj42
kennyj42 marked this pull request as ready for review April 23, 2026 22:49
@kennyj42
kennyj42 requested a review from ranbel as a code owner April 23, 2026 22:49
@kennyj42
kennyj42 requested a review from a team April 23, 2026 22:49
@@ -0,0 +1,14 @@
---
title: AAGUID restrictions and AMR matching for Access independent MFA
description: Restrict which WebAuthn authenticators users can enroll and skip redundant MFA prompts when the identity provider already performed MFA.

@sha-e-512 sha-e-512 Apr 24, 2026

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

AMR matching is available for all MFA methods, but this sentence makes it sound like it's only available for WebAuthn-backed authenticators i.e., it can be used for TOTP in addition to biometrics, and security keys.

We should reword this sentence to the following to improve readability:

"Restrict which WebAuthn authenticators users can enroll and allow users to skip redundant MFA prompts when they have already performed MFA using their IdP"

3. Select an existing [AAGUID list](#create-an-aaguid-list).
4. Select **Save**.

After you save, only authenticators whose AAGUIDs appear in the list can be enrolled. Users with previously enrolled authenticators outside the list can continue to use them until an administrator deletes the device.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

"device" makes me think of a ZT device, and not an authenticator: use "MFA device" or reword the sentence to "Users with previously enrolled authenticators outside the list can continue to use them until they are deleted by an administrator."

Also, add a link to the section where we explain how an administrator can delete MFA devices (under " Delete an authenticator").

- [Required AAGUIDs](#restrict-authenticators-by-aaguid) is set at the organization level. AAGUID information is not present in the IdP's AMR claim, so Access cannot verify that the IdP's MFA came from an approved device.
- The IdP does not return an `amr` claim.
- The IdP returns only AMR values that do not map to an [allowed authenticator type](#supported-mfa-methods) for the application or policy.
- The user's last IdP MFA is older than the configured AMR session duration.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Could reword this as: "The user's AMR matching session has expired because they last performed MFA via their IdP too long ago".

- The IdP returns only AMR values that do not map to an [allowed authenticator type](#supported-mfa-methods) for the application or policy.
- The user's last IdP MFA is older than the configured AMR session duration.

In these cases, Access prompts the user to complete independent MFA.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

It depends.
We will fall back to checking for existing MFA sessions. If there are no valid MFA sessions, then the user will be prompted to perform independent MFA.

kennyj42 and others added 2 commits April 28, 2026 09:27
Updated the MFA settings instructions to include the option for using identity provider MFA, which prevents double prompting for MFA. Adjusted the section title to reflect the new feature.
Comment thread src/content/docs/cloudflare-one/access-controls/policies/mfa-requirements.mdx Outdated
Comment thread src/content/changelog/access/2026-04-23-independent-mfa-aaguid-amr.mdx Outdated
Co-authored-by: ranbel <101146722+ranbel@users.noreply.github.com>
@ranbel
ranbel merged commit c4a333d into cloudflare:production Apr 28, 2026
6 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants