Skip to content

Security Defaults & Per-user MFA Leftovers

The question it answers: Are security defaults on, and which members still have legacy per-user MFA enabled or enforced?

Microsoft recommends Conditional Access instead of the legacy per-user MFA setting. Users still ‘enabled’ or ‘enforced’ for per-user MFA get prompted on every sign-in regardless of your CA policies, and the two systems together are hard to reason about. Security defaults, if on, cannot coexist with Conditional Access policies.

Where in the appEntra ID › Identity Hygiene › Security Defaults & Per-user MFA
WorkloadEntra ID
KindTable · dashboard tile
DataA scan: it runs only when someone presses Run scan (or calls the API’s scan action) and can take minutes. The last result is kept until the next scan.
LicenceNo extra licence needed.
Report id (API and MCP)entra.security.per-user-mfa-leftovers
An empty result meansNo member has legacy per-user MFA enabled or enforced.
ColumnKeyType
UserDisplayNameLink
UPNUserPrincipalNameText
Per-user MFAPerUserMfaStateStatus

Licence: No extra licence needed.

Application permissions on the IntensiveReports app registration (all permissions):

PermissionAPIWhat it allowsNote
Policy.Read.AllMicrosoft GraphRead your organization’s policies
UserAuthenticationMethod.Read.AllMicrosoft GraphRead all users’ authentication methods
User.Read.AllMicrosoft GraphRead all users’ full profiles
User-LifeCycleInfo.Read.AllMicrosoft GraphRead all users’ lifecycle information
Data sources it reads
  • GET /v1.0/policies/identitySecurityDefaultsEnforcementPolicy
  • GET /beta/users/{id}/authentication/requirements (scan)
GET /ir-api/v1/reports/entra.security.per-user-mfa-leftovers?size=100
POST /ir-api/v1/reports/entra.security.per-user-mfa-leftovers/scan

An AI assistant reads it with the MCP tool get_report and the id entra.security.per-user-mfa-leftovers. The client needs the Run scan grant for Entra ID. See Using the API.