HomeNewsletterCommunityMVP FeedToolsArchiveBlogToday's NewsAboutServicesQuick Links Subscribe free
← Back to Blog
Windows Hello for Business WHfBFIDO2PasskeysAAGUIDEntra IDConditional Access

Deploying FIDO2 Security Keys Alongside Windows Hello - and Locking Them Down by AAGUID

IA
Imran Awan
31 July 2026

Windows Hello for Business (WHfB) is a brilliant primary credential - but it lives on one device. When a user needs to sign in on a shared machine, recover from a lost laptop, or authenticate somewhere Hello is not provisioned, a FIDO2 security key is the portable phishing-resistant companion. The catch: if you enable FIDO2 without restrictions, a user can register any random key from a drawer. This post covers deploying FIDO2 alongside WHfB and - the part that actually matters for security - locking registration to the specific key models you trust, by their AAGUID.

The problem: "passwordless" is only as strong as the weakest key you allow

FIDO2 keys are phishing-resistant by design, so it is tempting to switch them on and move on. But not all keys are equal: some enforce a PIN or biometric second factor, some are certified to a hardware standard, and some cheap keys are neither. If your Authentication methods policy allows any FIDO2 key, a user can self-register a consumer key with no second factor and you have a phishing-resistant-in-name credential guarding real access. Control over which keys can register is the whole security story.

Why it happens: attestation and the AAGUID

Two concepts make key control possible. Attestation is the key proving, at registration, what make and model it is - Microsoft Entra ID verifies that claim against trusted metadata. The AAGUID (Authenticator Attestation GUID) is a 128-bit identifier the FIDO2 spec requires every vendor to embed, identical across identical models and distinct between models. Together they let you say "only YubiKey model X and our issued keys may register" and have Entra enforce it.

Note: Passkeys (FIDO2) are available in all Microsoft Entra ID editions including the free tier - no extra licence. And WHfB and FIDO2 are complementary, not either/or: WHfB is the on-device daily credential, the FIDO2 key is the portable/backup one. Deploying both is the mainstream phishing-resistant posture.

How to verify

Confirm three things. First, a user in the target group can register an allowed key from the Security info page, and a disallowed key is refused. Second, the registered key's AAGUID (visible in the user's authentication method details) matches your allow-list. Third, accessing the Conditional-Access-protected resource actually demands the FIDO2 key. If registration of an approved key fails, check that the user completed multifactor authentication within the last five minutes - that is a hard prerequisite for registering a passkey.

Note: Synced passkeys (iCloud Keychain, Google Password Manager) do not support attestation - treat them as phishing-resistant but with the same posture as an unattested key. If your policy requires attestation, it effectively requires device-bound keys (security keys, or Authenticator device-bound), not synced ones. Decide that split deliberately per group.

The fix, part 1: enable passkey profiles

Modern Entra uses passkey profiles - group-based rules rather than one tenant-wide switch, so you can require attestation for admins while being more permissive for frontline staff. As an Authentication Policy Administrator:

entra.microsoft.comEntra ID › SecurityAuthentication methodsPoliciesPasskey (FIDO2)
  1. Sign in to entra.microsoft.com as at least an Authentication Policy Administrator.
  2. Go to Entra ID › Security › Authentication methods › Policies › select Passkey (FIDO2).
  3. Select the banner link to opt in to passkey profiles (your existing global settings transfer to a Default passkey profile).
  4. On the Configure tab, set Allow self-service set up to Yes so users can register via the Security info page.
  5. Select the Default passkey profile › choose the passkey types to allow › Save.
Gotcha: Opting in to passkey profiles is one-way - you cannot opt back out. And only up to three profiles (including the Default) are supported today, within a 20 KB policy size budget. Plan your profile split (for example: admins, standard users, a pilot) before you flip it, because you cannot restructure freely afterward.

The fix, part 2: restrict which keys can register

In a passkey profile, two controls do the heavy lifting:

ControlSettingEffect
AttestationEnforce attestation = YesAt registration, Entra verifies the key's make/model against trusted metadata. Without it, Entra cannot guarantee anything about the key - including whether it is synced or device-bound
Key restrictionsEnforce key restrictions = Yes, Behavior = Allow/Block, + AAGUID listOnly the listed key models may register (Allow), or the listed models are refused (Block)

To create a dedicated profile with these controls:

  1. Back on the Configure tab, select + Add passkey profile.
  2. Set Enforce attestation to Yes.
  3. Set Enforce key restrictions to Yes › choose Behavior (Allow or Block) › add the AAGUID(s) for the key model(s).
  4. Select Save, then under Enable and Target, add the target group(s) this profile applies to.

In the passkey profile those two controls look like this:

Microsoft Entra Admin Center — Passkey (FIDO2) profile
Enforce attestationYes
Enforce key restrictionsYes
Restrict — Behavior: Allow · AAGUIDs: 1 listedYubiKey 5

To find a key's AAGUID: work with the vendor, consult Microsoft's list of attestation-eligible keys, or - if the key is already registered - read it from the user's authentication method details in the admin center.

Watch out: Key restrictions govern both registration and authentication. If you remove an AAGUID you previously allowed, users who already registered that model can no longer sign in with it - you have not just blocked new registrations, you have locked out existing keys. Change an allow-list only after you know who is using what. And note: attestation enforcement applies only at registration - turning it on later does not retroactively block a key registered without it, so set it before you roll keys out, not after.

The fix, part 3: require the key for sensitive access

Enabling registration does not force anyone to use it. To require a phishing-resistant FIDO2 sign-in for sensitive resources, use a Conditional Access authentication strength - either the built-in phishing-resistant strength, or a custom one that even pins a specific AAGUID:

Entra IDAuthentication methodsAuthentication strengthsNew authentication strengthPasskeys (FIDO2) + Advanced options › Add AAGUID

Proof it worked

Success is a user registering exactly the key model you sanctioned, an unsanctioned key being turned away at registration, and the sensitive app prompting for the FIDO2 key on next access. Your allow-list is short and matches the hardware you actually issued - not "any FIDO2 key on earth."

Tip: Start with two profiles: admins on device-bound + enforce attestation + a tight AAGUID allow-list, everyone else more permissive while you pilot. It gives your highest-value accounts the strongest guarantee immediately, without blocking a broad rollout on sourcing one specific key for ten thousand users. Tighten the general population later as your issued-key supply chain matures.

References

PowerShell Scripts — FIDO2 AAGUID Helper

Script for this post is in Daily-Tasks.

Get-Fido2AaguidInfo.ps1
— offline helper: validates an AAGUID's format and maps common ones (YubiKey, Authenticator, Windows Hello) to a friendly name for building allow/block lists
View all scripts on GitHub
Was this post helpful?
React below — no account needed
Share this post
LinkedIn X / Twitter Reddit Bluesky

More from EndpointWeekly

Windows Hello for Business
Force Phishing-Resistant Sign-In: Requiring WHfB With…
Enabling WHfB makes it available - it does not make it mandatory. A Conditional Access…
Windows Hello for Business
Windows as a Passkey Provider: Where WHfB Ends and Passkeys…
Windows Hello is already a passkey provider - it can create, store and unlock passkeys…
Windows Hello for Business
dsregcmd /status Decoded: The Complete Field Reference for WHfB…
One command answers more WHfB questions than any portal - and its forty-plus fields come…