To list authentication strengths in Microsoft Entra ID, read the authentication strength policies, the 3 built-in strengths and any custom ones, with the method combinations each allows, then the Conditional Access policies that require each one. A strength does nothing until a policy requires it, and Conditional Access needs Microsoft Entra ID P1.
| Method | Best fit |
|---|---|
| PowerShell | A CSV of every strength with its combinations and the policies that require it. |
| Admin centre | Reading what 1 strength allows, or which strength 1 policy requires. |
| Altivane | Recommended for recurring reviews, with each strength's combinations in the admin centre's words. |
Before you start
Use an account in the Security Reader, Security Administrator or Conditional Access Administrator role. The PowerShell example requests Policy., which covers both the strengths and the Conditional Access policies; your organisation may require administrator consent.
Know what a strength is. It lists combinations of authentication methods, such as a password with a Microsoft Authenticator push, and a sign-in meets it with any 1 of them. The built-in strengths can't be changed, and Microsoft updates them when new methods arrive; a tenant can add up to 15 custom ones. The examples read and export; they don't change any strength or policy.
Option 1
List authentication strengths with PowerShell
Install the modules once, then connect and export each strength with the policies that require it.
# Install once, if the modules are not already installed.
Install-Module Microsoft.Graph.Authentication, Microsoft.Graph.Identity.SignIns -Scope CurrentUser$ErrorActionPreference = 'Stop'
Connect-MgGraph -Scopes 'Policy.Read.All' -NoWelcome
try {
$strengths = @(Get-MgPolicyAuthenticationStrengthPolicy)
$policies = @(Get-MgIdentityConditionalAccessPolicy -All)
$report = @(foreach ($strength in $strengths | Sort-Object PolicyType, DisplayName) {
$requiring = @($policies | Where-Object {
$_.GrantControls.AuthenticationStrength.Id -eq $strength.Id
})
$names = $requiring | ForEach-Object { "$($_.DisplayName) ($($_.State))" }
[pscustomobject]@{
Strength = $strength.DisplayName
Type = $strength.PolicyType
Combinations = @($strength.AllowedCombinations) -join '; '
Satisfies = $strength.RequirementsSatisfied
Modified = $strength.ModifiedDateTime
RequiredBy = @($names) -join '; '
}
})
if ($report.Count -eq 0) {
Write-Output 'No authentication strength could be read.'
} else {
$path = './authentication-strengths.csv'
$report | Export-Csv -Path $path -NoTypeInformation -Encoding utf8
$unused = @($report | Where-Object { -not $_.RequiredBy }).Count
Write-Output "$($report.Count) authentication strengths; no policy requires $unused."
}
} finally {
Disconnect-MgGraph | Out-Null
}Each row is 1 strength, the built-in ones first. Combinations uses Microsoft's names, such as password,microsoftAuthenticatorPush for a password with an Authenticator push, and Satisfies is mfa when meeting the strength also counts as multifactor authentication. RequiredBy gives each policy with its state: a strength required only by policies that are off or report-only enforces nothing.
List the custom strengths only
Reconnect with Connect-MgGraph, then filter on the type. The filter runs in Microsoft Graph.
# Run while connected to Microsoft Graph.
Get-MgPolicyAuthenticationStrengthPolicy -Filter "policyType eq 'custom'" |
Select-Object DisplayName, AllowedCombinations, ModifiedDateTimeOption 2
Review authentication strengths in the admin centre
- Sign in to the Microsoft Entra admin centre as at least a Security Reader.
- Go to Entra ID > Authentication methods > Authentication strengths.
- Select a strength to see the method combinations it allows.
- To see which strength a policy requires, go to Entra ID > Conditional Access > Policies, select the policy and open Grant under Access controls: Require authentication strength names it.
- Close each page without saving anything.
This suits reading 1 strength or 1 policy. Matching every strength with every policy means opening each policy in turn, so for the whole tenant, use PowerShell or a report.
Option 3 ยท Recommended for recurring reviews
Report on authentication strengths with Altivane
- Open Altivane and choose the tenant.
- Build the tenant's documents with the Conditional Access scorecard report in full, so the strengths are listed as well as counted.
- Open the tenant's Excel workbook and find Authentication Strengths: each built-in and custom strength with its type, its allowed combinations, its description and when it was modified.
- Read Policy Overview for the strength in each policy's Grant, and Conditional Access Summary for how many custom strengths there are and how many policies require MFA or a strength.
Altivane writes each combination as the Entra admin centre lists it, such as Password + Microsoft Authenticator (push notification), rather than Microsoft Graph's codes. Policy Overview shows each policy's state beside its grant, so a strength required only by a report-only policy stands out. Where the strengths can't be read, the table says it was not collected and the custom count says Not read, rather than 0. The table goes to the workbook only to start; you can put it in the Word report too.
Contact usCommon questions
Can I change a built-in strength?
No. Built-in strengths are read only, so make a custom strength with the combinations you want. For a passkey (FIDO2), a custom strength can also limit which security key models are allowed.
Why can't a person meet a strength?
A combination counts only when its methods are turned on in the authentication methods policy and the person has registered 1 of them. Check the policy first; see how to check the authentication methods policy.
Do strengths work for guests?
Only for external users who authenticate with Microsoft Entra ID. For email one-time passcode, SAML or WS-Fed and Google federation users, Microsoft says to use the Require multifactor authentication grant control instead.
Microsoft references
Technical references checked on 7 November 2026. The example scripts have been reviewed and syntax checked; they have not been run against a live tenant.