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)

Select the banner link to opt in to passkey profiles (your existing global settings transfer to a Default passkey profile). Set Allow self-service set up to Yes so users can register via the Security info page.

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)

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
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…