Skip to content

AADSTS50074: Strong authentication required, MFA not passed

Short answer: AADSTS50074 means MFA was required and the user did not pass the challenge. The password stage had already succeeded. One or two are normal. Many for one user in a short window from an unfamiliar IP is the MFA fatigue pattern: someone with the correct password is pushing prompts and waiting for an approval.

At a glance
CodeAADSTS50074
Microsoft nameUserStrongAuthClientAuthNRequiredInterrupt
CategoryMultifactor authentication
TypeInterrupt (an expected extra step, not a failure)
Attack signalMedium: worth a look in context
MITRE ATT&CKT1621 MFA Request Generation, T1078.004 Valid Accounts: Cloud Accounts
Where to lookSigninLogs
Microsoft lookuplogin.microsoftonline.com/error?code=50074

UserStrongAuthClientAuthNRequiredInterrupt: Strong authentication is required and the user did not pass the MFA challenge.

Microsoft’s password spray playbook lists it as “50074 - MFA required”. Either way the order of events is the same: the password was accepted, then the MFA step did not complete.

A single 50074 is usually a user who dismissed a prompt, picked up the wrong phone, or let it time out. The signal is repetition, and where it comes from.

Pattern Likely meaning
One 50074, then 0 from the same IP and device The user retried and passed MFA. Benign.
Several 50074 for one user in minutes, from an IP or country the user doesn’t use MFA fatigue (T1621). The attacker has the password and is generating prompts.
50074 burst followed by 0 from the same unfamiliar IP The user approved a prompt they didn’t start. Treat as account takeover.
50074 from an IP that also produced many 50126 failures The spray found a correct password and is now stuck at MFA.
50074 alongside 500121 for the same user Same picture. See 500121.

The playbook’s instruction applies directly: “record successful passwords but failed MFA responses, as this activity indicates that the attacker is getting the password but not passing MFA.”

Users with repeated 50074 from one IP within an hour:

SigninLogs
| where TimeGenerated > ago(1d)
| where ResultType == "50074"
| summarize Prompts = count(),
FirstSeen = min(TimeGenerated),
LastSeen = max(TimeGenerated),
Apps = make_set(AppDisplayName, 5)
by UserPrincipalName, IPAddress, bin(TimeGenerated, 1h)
| where Prompts >= 3
| sort by Prompts desc

The threshold of 3 is a starting point, not a Microsoft number. Tune it against your own baseline.

What happened at the MFA step. AuthenticationDetails is a string column holding a JSON array, so parse it first:

SigninLogs
| where TimeGenerated > ago(1d)
| where ResultType == "50074"
| mv-expand Step = parse_json(AuthenticationDetails)
| extend Method = tostring(Step.authenticationMethod),
StepResult = tostring(Step.authenticationStepResultDetail),
Succeeded = tobool(Step.succeeded)
| summarize Steps = count() by UserPrincipalName, IPAddress, Method, StepResult, Succeeded
| sort by Steps desc

The field names inside AuthenticationDetails follow the Microsoft Graph authenticationDetail object. Check them against a row in your own workspace before relying on this query. Don’t use MfaDetail; Microsoft marks that column as deprecated.

How do Conditional Access and MFA affect it?

Section titled “How do Conditional Access and MFA affect it?”
  • 50074 is the MFA requirement doing its job. Whatever required MFA (a Conditional Access grant, per-user MFA, security defaults) stopped a sign-in that had a correct password.
  • Microsoft documents that an interrupted sign-in “appears on the logs but shows Not applied for Conditional Access.” Don’t conclude from that column that no policy applied.
  • Push approval without context is what fatigue attacks rely on. Microsoft enforced number matching for Microsoft Authenticator push in 2023, so the plain “tap Approve” path mostly remains in third-party or NPS-extension MFA. Phishing-resistant methods (FIDO2, passkeys, Windows Hello for Business) remove the push entirely. The MFA fatigue guide walks through the investigation.

For the user: if you didn’t start the sign-in, deny the prompt and report it. That prompt means someone has your password.

For admins:

  1. If the 50074 burst came from an IP the user doesn’t use, reset the password. The attacker already has it.
  2. Check for a later 0 from the same IP. If there is one, revoke sessions (Revoke-MgUserSignInSession) and review what the session accessed.
  3. Move users off plain push approval toward phishing-resistant methods.

Guides that use this code

Sources

  1. Microsoft Entra authentication and authorization error codes
  2. Password spray investigation (Microsoft incident response playbook)
  3. Interactive user sign-ins
  4. Revoke user access in Microsoft Entra ID
  5. SigninLogs table reference (Azure Monitor)