Skip to content

AADSTS error code map

This map lists the AADSTS codes covered here, ordered by how often they show up in attacks. Each code page has Microsoft’s official description, how to tell an attack from a misconfiguration, how Conditional Access interacts with it, and the KQL to hunt it.

CodeMicrosoft nameAttack signalATT&CK techniqueTypeCategory
50053IdsLockedHighT1110.003 Password Spraying
T1110.001 Password Guessing
FailureCredentials and lockout
50079UserStrongAuthEnrollmentRequiredHighT1078.004 Valid Accounts: Cloud Accounts
T1098.005 Account Manipulation: Device Registration
InterruptMultifactor authentication
50126InvalidUserNameOrPasswordHighT1110.003 Password Spraying
T1110.001 Password Guessing
FailureCredentials and lockout
50034UserAccountNotFoundMediumT1087.004 Account Discovery: Cloud Account
T1110.003 Password Spraying
FailureCredentials and lockout
50055InvalidPasswordExpiredPasswordMediumT1110.003 Password Spraying
T1078.004 Valid Accounts: Cloud Accounts
FailureCredentials and lockout
50057UserDisabledMediumT1110.003 Password Spraying
T1078.004 Valid Accounts: Cloud Accounts
FailureCredentials and lockout
50074UserStrongAuthClientAuthNRequiredInterruptMediumT1621 MFA Request Generation
T1078.004 Valid Accounts: Cloud Accounts
InterruptMultifactor authentication
50076UserStrongAuthClientAuthNRequiredMediumT1078.004 Valid Accounts: Cloud Accounts
T1110.003 Password Spraying
InterruptMultifactor authentication
50097DeviceAuthenticationRequiredMediumT1078.004 Valid Accounts: Cloud AccountsInterruptDevices
50125PasswordResetRegistrationRequiredInterruptMediumT1078.004 Valid Accounts: Cloud AccountsInterruptCredentials and lockout
50173Grant expired due to revocationMediumT1550.001 Use Alternate Authentication Material: Application Access TokenFailureTokens and sessions
53000DeviceNotCompliantMediumT1078.004 Valid Accounts: Cloud Accounts
T1550.001 Use Alternate Authentication Material: Application Access Token
FailureDevices
53001DeviceNotDomainJoinedMediumT1078.004 Valid Accounts: Cloud AccountsFailureDevices
53003BlockedByConditionalAccessMediumT1078.004 Valid Accounts: Cloud AccountsFailureConditional Access
65001DelegationDoesNotExistMediumT1528 Steal Application Access Token
T1566.002 Phishing: Spearphishing Link
FailureConsent and app permissions
90094AdminConsentRequiredMediumT1566.002 Phishing: Spearphishing Link
T1528 Steal Application Access Token
FailureConsent and app permissions
500121MFA prompt not completedMediumT1621 MFA Request GenerationFailureMultifactor authentication
530032BlockedByConditionalAccessOnSecurityPolicyMediumT1078.004 Valid Accounts: Cloud Accounts
T1110.003 Password Spraying
FailureConditional Access
7000215Invalid client secretMediumT1078.004 Valid Accounts: Cloud AccountsFailureApp configuration
50011InvalidReplyToLowT1528 Steal Application Access TokenFailureApp configuration
50020UserUnauthorizedLow-FailureGuests and tenants
50105EntitlementGrantsNotFoundLowT1078.004 Valid Accounts: Cloud AccountsFailureApp configuration
50133SsoArtifactRevokedLow-FailureTokens and sessions
50140KmsiInterruptLowT1078.004 Valid Accounts: Cloud AccountsInterruptTokens and sessions
50158External security challenge not satisfiedLowT1078.004 Valid Accounts: Cloud AccountsInterruptMultifactor authentication
70043BadTokenDueToSignInFrequencyLow-FailureTokens and sessions
90095AdminConsentRequiredRequestAccessLowT1566.002 Phishing: Spearphishing Link
T1528 Steal Application Access Token
InterruptConsent and app permissions
135011Device disabledLow-FailureDevices
700016UnauthorizedClient_DoesNotMatchRequestLow-FailureApp configuration
700082ExpiredOrRevokedGrantInactiveTokenLow-FailureTokens and sessions
  • Conditional Access runs after the first factor. Credential failures such as 50126, 50053 and 50057 show Conditional Access as notApplied. That does not mean your policies are missing.
  • Interrupts are not failures. Codes such as 50076, 50079 and 50140 are expected extra steps. They matter when an attacker’s IP reaches them, because the password was correct.
  • ResultType is a string. Write ResultType == "50126", not ResultType == 50126.
  • Refresh-token activity is non-interactive. Many post-incident codes, such as 50173, appear in AADNonInteractiveUserSignInLogs.