How to Set Up MFA for Microsoft 365 (Step-by-Step)
A complete guide to enabling multi-factor authentication for every user in your Microsoft 365 tenant using Conditional Access, Microsoft Authenticator, and passkeys.
Overview
Multi-factor authentication (MFA) is the single most effective security control you can deploy. Microsoft reports that MFA blocks 99.9% of automated account compromise attacks. As of February 2026, Microsoft requires MFA for all admin access to the Microsoft 365 admin center.
This guide walks you through the three ways to enable MFA, from simplest to most flexible, and covers user enrollment with Microsoft Authenticator and passkeys.
Which Method Should You Use?
| Method | Best For | Licence Required |
|---|---|---|
| Security Defaults | Very small orgs with no specific requirements | Any (free) |
| Per-User MFA | Legacy — not recommended | Any |
| Conditional Access | All organisations (granular control, exceptions, reporting) | Microsoft Entra ID P1 (included in Business Premium, E3, E5) |
If you have Microsoft 365 Business Premium or E3/E5, skip straight to Conditional Access. It gives you far more control than Security Defaults and is the Microsoft-recommended approach.
Method 1: Conditional Access (Recommended)
Step 1 — Create a break-glass account
Before enabling any MFA policies, create an emergency access account that is excluded from all Conditional Access policies. This prevents lockout if MFA systems fail.
- Go to Microsoft Entra admin center (entra.microsoft.com) > Users > Create new user
- Give it a name like
BreakGlass-Admin - Assign the Global Administrator role
- Set a long, complex password and store it in a physical safe
- Do not enable MFA on this account
- Set up an alert rule to notify you if this account is used
Step 2 — Create the Conditional Access policy
- Go to entra.microsoft.com > Protection > Conditional Access > Create new policy
- Name: Require MFA — All Users
- Users: All users → Exclude your break-glass account
- Target resources: All cloud apps
- Grant: Require multi-factor authentication
For the strongest protection, use Authentication strengths instead of the basic MFA grant:
- Under Grant, select Require authentication strength
- Choose Phishing-resistant MFA (requires passkeys, FIDO2, or Windows Hello)
- Or choose Multifactor authentication for the standard requirement
Step 3 — Start in Report-Only mode
Set the policy to Report-only first. Review sign-in logs for 1-2 weeks to identify any users or apps that would be blocked, then switch to On.
Step 4 — Block legacy authentication
Create a second policy to block clients that cannot support MFA:
- Name: Block Legacy Authentication
- Users: All users (exclude break-glass)
- Target resources: All cloud apps
- Conditions > Client apps: Select Exchange ActiveSync clients and Other clients
- Grant: Block access
Microsoft has permanently disabled basic authentication for Exchange Online. This policy is still recommended as a defence-in-depth measure to block legacy client app types across all cloud applications.
Method 2: Security Defaults (Quick Setup)
If you do not have a Conditional Access licence, Security Defaults enables MFA for all users with zero configuration.
- Go to entra.microsoft.com > Identity > Overview > Properties
- Click Manage security defaults
- Set Security defaults to Enabled
This enforces:
- MFA registration for all users
- MFA challenge when signing in from a new device or location
- Block of legacy authentication protocols
Security Defaults is all-or-nothing — you cannot exclude specific users or create exceptions. If you need exceptions (e.g., for service accounts or a conference room display), use Conditional Access instead.
Setting Up Microsoft Authenticator (User Guide)
Share these instructions with your users after enabling MFA.
Step 1 — Install the app
Download Microsoft Authenticator from:
- iOS: App Store
- Android: Google Play
Step 2 — Add your work account
- Open the Authenticator app
- Tap + > Work or school account > Scan QR code
- Sign in to your Microsoft 365 account in a browser
- When prompted to set up MFA, scan the QR code shown on screen
- Approve the test notification on your phone
Step 3 — Enable number matching
Number matching is enabled by default since May 2023. When you approve a sign-in:
- The sign-in screen displays a two-digit number
- Your phone shows a prompt asking you to enter that number
- Type the number and tap Yes
This prevents MFA fatigue attacks where someone approves a prompt they did not initiate.
Setting Up Passkeys (Strongest Option)
Passkeys are phishing-resistant because they are bound to a specific website — they cannot be tricked into authenticating to a fake login page.
Option A: Device-bound passkey (Windows Hello)
- Sign in to mysignins.microsoft.com
- Click Add sign-in method > Passkey (Windows Hello)
- Follow the Windows Hello prompts (fingerprint, face, or PIN)
- The passkey is stored on your Windows device's TPM
Option B: FIDO2 security key (hardware key)
- Purchase a FIDO2 key (YubiKey 5 series, Google Titan, or Feitian)
- Sign in to mysignins.microsoft.com
- Click Add sign-in method > Security key
- Insert the key and follow the prompts
- Set a PIN for the key
Option C: Passkey in Authenticator (cross-device)
- Open Authenticator > your work account > Set up passkey
- Follow the prompts to register a passkey stored in the app
- Works across devices — no hardware key needed
For maximum security, require phishing-resistant MFA (passkeys/FIDO2) for admin accounts and sensitive roles using authentication strengths in Conditional Access. Standard MFA via Authenticator push is sufficient for regular users.
Verifying MFA Coverage
Check enrollment status
- Go to entra.microsoft.com > Protection > Authentication methods > User registration details
- Review which users have registered MFA methods
- Filter by "MFA capable" = No to find unregistered users
Check enforcement via sign-in logs
- Go to entra.microsoft.com > Monitoring > Sign-in logs
- Add column: Conditional Access
- Filter: Conditional Access = "Success" to see MFA-enforced sign-ins
- Filter: Conditional Access = "Failure" to see blocked attempts
PowerShell report
# Connect to Microsoft Graph
Connect-MgGraph -Scopes "UserAuthenticationMethod.Read.All"
# Get all users and their registered MFA methods
Get-MgUser -All | ForEach-Object {
$methods = Get-MgUserAuthenticationMethod -UserId $_.Id
[PSCustomObject]@{
User = $_.DisplayName
UPN = $_.UserPrincipalName
Methods = ($methods | ForEach-Object { $_.AdditionalProperties['@odata.type'] -replace '#microsoft.graph.', '' }) -join ', '
Count = $methods.Count
}
} | Sort-Object Count | Format-Table -AutoSize
Troubleshooting
| Issue | Cause | Fix |
|---|---|---|
| User not prompted for MFA | Policy in Report-only mode or user excluded | Check policy status and assignments |
| "More information required" loop | MFA registration not completed | User must complete setup at aka.ms/mfasetup |
| Authenticator not receiving notifications | Phone not connected to internet or notifications blocked | Check phone settings, try approval code instead |
| Service account blocked | Cannot support interactive MFA | Exclude from MFA policy, use managed identity or certificate auth |
| Users complaining about constant MFA prompts | Sign-in frequency too aggressive | Configure session controls: set sign-in frequency to 7 or 30 days |
| FIDO2 key not recognised | Browser does not support WebAuthn | Use Edge or Chrome (both support FIDO2 natively) |
Next Steps
- Set up Conditional Access policies for device compliance and location-based access
- Configure self-service password reset (SSPR) to reduce helpdesk tickets
- Enable Microsoft Entra ID Protection for risk-based MFA challenges
- Audit and remove any remaining app passwords
Related Articles
Was this article helpful?
