Skip to main content
Systems Engineering

Microsoft 365 Conditional Access Blocking Legacy Auth: AADSTS53003

How to trace AADSTS53003 and legacy authentication blocks in Entra sign-in logs and remediate clients without weakening Conditional Access.

Misty airport runway blocked by safety barriers for authorized access only.

In this guide

Share

#Context

AADSTS53003 is the Microsoft Entra error returned when a Conditional Access policy blocks access. It is not specific to legacy authentication, so the first task is to establish which policy blocked the request and which client made it. This article covers the documented general approach; confirm version-specific portal labels and policy behaviour in the Microsoft 365 documentation.

Assumptions: you hold read access to Entra sign-in logs and Conditional Access policies, you have a non-production tenant or a report-only path for testing, and changes follow your organisation’s change control. Observations come from logs; causes are inferences until a policy is shown in the log’s Conditional Access tab.

Legacy authentication generally refers to protocols and clients that cannot perform modern authentication or satisfy controls such as multifactor authentication. Typical examples are older IMAP, POP, SMTP AUTH and some older Exchange ActiveSync or Office clients. Because they cannot meet grant controls, a policy that blocks them is working as designed.

#Architecture

A sign-in reaches Entra ID, which evaluates assigned Conditional Access policies against user, application, client app type and other signals. If a block control matches, the request fails and the log records the policy result. The client app condition is the usual discriminator for legacy authentication blocks.

Rendering diagram...

Related operational context: blocked mail flow errors have different causes, as covered in Exchange Online 550 5.7.708 access denied, so do not assume every mail failure is a Conditional Access block.

#Implementation

Work in this order, read-only first.

  1. Filter the Entra sign-in logs for failure code 53003 and a bounded time window. Include non-interactive sign-ins, since legacy clients often appear there.
  2. Open an event and read the Client app field, the application, the user and the Conditional Access tab. The tab shows which policy returned failure.
  3. Group results by client app and application to identify which protocols and applications account for the volume.
  4. Map each group to an owner: a mailbox-reading device, a scanner, a line-of-business script, or an old Office build.
  5. For each owner, choose remediation: update the client to support modern authentication, move the workflow to a supported modern mechanism, or retire it.
  6. Where a short exception is unavoidable, scope it narrowly and document it. Prefer a separate, named policy with a defined owner and expiry over editing the blocking policy broadly. Any exception weakens protection for the scoped identities, so it needs explicit risk acceptance.

Use report-only mode for new or modified policies where available to see the effect before enforcement. Check current Microsoft documentation for how report-only results are shown. Related guidance on bounded changes appears in bounded Enterprise IT Management operations in Microsoft 365.

Note the retirement timeline for Exchange Web Services described in the EWS retirement deadline, since some older integrations may be affected by both protocol retirement and policy blocks.

#Validation

  • After remediating a client, repeat the log query and confirm that the specific user and client app no longer produce 53003 and that a successful sign-in shows modern authentication as the client type.
  • Confirm the Conditional Access tab for the successful event shows the expected policies applied, not bypassed.
  • Confirm the blocking policy itself is unchanged in scope and state, using its audit history.
  • Observable success: the count of 53003 events for legacy client apps trends to zero for owned workloads, and remaining events correspond only to unauthorised or unknown clients.

#Failure modes

  • Events with no obvious legacy client: the block may come from a different policy such as device compliance or location. Read the policy name rather than assuming.
  • Non-interactive sign-ins missed: the filter excluded them, so a service appears healthy while failing. Widen the filter.
  • Shared or service identities: one account used by many scripts hides ownership. Identify callers before changing anything.
  • Exclusion drift: a temporary exception without expiry becomes permanent. Assign an owner and review date.
  • Delayed effect: policy or client changes may take time to show in logs, so wait and retest before concluding failure.

#Security

Legacy protocols commonly bypass multifactor authentication, which is why blocking them is widely recommended; verify current Microsoft guidance. Apply least privilege: limit who can edit Conditional Access, require review for exclusions, and keep emergency access accounts according to your organisation’s documented practice. Never exclude a broad group to silence errors. Residual risk remains for any excluded identity, so compensating controls such as restricted mailbox permissions and monitoring of its sign-ins are advisable. Licensing and group assignment issues can also affect access; see Microsoft 365 group licensing for a separate class of problem.

#Recovery

If a policy change causes unexpected lockouts, revert the specific change from the recorded prior configuration, using your emergency access path if needed, then re-run the log query. Record the policy state before any edit so rollback is exact. Stop and escalate to a human owner if sign-ins for privileged accounts begin failing, or if the affected population is larger than expected.

Microsoft 365 Conditional Access Blocking Legacy Auth: AADSTS53003 architecture diagram 1
Photo by Brett Sayles on Pexels

#Operational checks for blocked legacy authentication

  • Weekly: review 53003 events grouped by client app and owner.
  • On every exclusion: confirm owner, scope, expiry and compensating controls.
  • Before enforcing changes: test in report-only mode or a non-production tenant.
  • Next safe decision: migrate or retire the highest-volume legacy client first, and leave the blocking policy intact.

#Prerequisites and permissions for investigation

#
Roles to request before starting

Use the narrowest roles that allow the work. Reading sign-in logs and policy definitions is possible with a reporting or security reader role, while editing policies needs a Conditional Access administrator or equivalent. Keep these duties separate where staffing allows: the analyst who finds the affected clients should not be the only person who approves an exception. Record the role used, the activation time if you use privileged identity management, and the ticket reference that justified it.

#
Tooling checks

If you query with Microsoft Graph PowerShell, confirm the connected scopes before running anything. A read-only session needs only the scopes for audit logs and policy reading:

1Connect-MgGraph -Scopes "AuditLog.Read.All","Policy.Read.All"
2Get-MgContext | Select-Object -ExpandProperty Scopes

Do not request write scopes such as Policy.ReadWrite.ConditionalAccess until a change has been approved. Confirm the cmdlet names against your installed module version, as they can differ between releases.

#Implementation detail: extracting and grouping evidence

#
Exporting a bounded set of events

Where the sign-in log is available through Log Analytics, a query along these lines groups failures by client app and application. The table and column names assume the diagnostic settings for sign-in logs are already routed to a workspace; verify them in your own workspace schema first.

1SigninLogs
2| union AADNonInteractiveUserSignInLogs
3| where TimeGenerated > ago(7d)
4| where ResultType == "53003"
5| summarize Failures=count(), Users=dcount(UserPrincipalName) by ClientAppUsed, AppDisplayName
6| order by Failures desc

Keep the exported result with the query text and the time range. Without them, a later comparison cannot show that the same population was measured.

#
Identifying the blocking policy

The policy name is held in the Conditional Access detail of each event. For a sample of events from each group, note the policy name and its result. If one group is blocked by more than one policy, treat each policy as a separate finding, because remediating the client may satisfy one and still leave the other.

#
Confirming the owner

Match each group to an owner using evidence rather than the account name alone. Useful corroboration includes the source IP address in the event, the application shown, the time pattern of the requests, and any mailbox or device inventory. A regular pattern at fixed minutes usually indicates a scheduled script or device. Record the confidence level for each attribution as confirmed, probable or unknown.

Hand holding pencil reviewing colorful data charts on desk with laptop.
Photo by Lukas Blazek on Pexels

#Expected evidence at each stage

  • Before change: a dated export of failures by client app, the policy names involved, and a saved copy of the policy configuration.
  • During change: the change ticket, the approver, and the report-only results if that mode was used for any modified policy.
  • After change: a repeat of the same query over a comparable window, plus at least one successful sign-in for each remediated owner showing the expected client type.
  • At closure: the exclusion register entry, if any, containing the scope, owner, expiry date and the named person who accepted the risk.

#Monitoring beyond the weekly review

#
Alert candidates

Consider a scheduled log query that alerts when the number of failures for a single user and client app combination rises sharply against its previous seven-day pattern. A sudden rise can signal a newly deployed device, a credential-stuffing attempt using a legacy protocol, or a policy change that widened scope. Set the threshold from your own baseline rather than adopting a figure from this article.

#
Watching excluded identities

For every identity in an exception, create a saved query on its successful sign-ins by client app and source location. A change in either is a reason to review the exception early. Check that the exclusion still matches the documented scope by reading the policy’s audit history, not only its current state.

#Realistic failure symptoms

  • A mail client repeatedly prompts for a password: this may be the visible symptom of a block, but a genuine credential problem looks similar. Confirm in the log before changing anything.
  • A scanner or application stops sending without an obvious message: many devices hide the underlying error. Check the non-interactive log for the service account around the time it stopped.
  • Failures begin after a policy edit but only for some users: compare group membership and the assignment conditions. A user added to a targeted group after the policy was written is a common explanation.
  • Successful sign-in appears in the log yet the application still fails: the cause may be outside Conditional Access, such as mailbox permissions or a protocol setting on the service. Do not keep editing the policy.

#Change-control records

Each change to a Conditional Access policy should leave a record that another engineer can use to reverse it. Include the following fields.

  • Policy name and its identifier, as shown in the policy properties.
  • State before and after the change (for example on, off or report-only).
  • Exact assignment and condition changes, expressed as a before and after comparison.
  • Evidence supporting the change, with links to the saved log export.
  • Approver, implementer, implementation time and planned review date.
  • Rollback instruction and the person authorised to run it.

If your tooling can export the policy as JSON, store that file with the ticket. Treat the export as sensitive, since it reveals which identities are excluded from protection.

#Escalation thresholds

Agree thresholds before the change, not during an incident. Suggested triggers for immediate escalation to the policy owner and the security lead are:

  • Any privileged or emergency access account failing a sign-in after a change.
  • An affected population materially larger than the pre-change export predicted.
  • A business-critical mail or integration flow stopping with no owner identified.
  • Evidence of legacy protocol sign-ins from unexpected locations against any account, which should be handled as a possible compromise rather than a configuration fault.

For the last item, follow your incident process for credential reset and session revocation, and do not relax any policy while the investigation is open.

#Safe rollback actions

  1. Pause new changes and tell the change owner what you are about to reverse.
  2. Compare the current policy with the stored prior configuration so that only the intended difference is reverted.
  3. Prefer the smallest reversal. Setting a modified policy back to report-only, or removing a newly added assignment, is safer than disabling a long-standing block.
  4. Do not delete a policy as a rollback step. Deletion removes its history from the place where colleagues will look first.
  5. Re-run the saved query after an appropriate wait, and confirm that the affected users can sign in and that the original block still applies to everyone else.
  6. Update the ticket with the time of reversal, the reason, and what evidence showed recovery.

If a temporary exception was created to restore service, give it the same expiry and owner requirements as any other exception, and schedule the client remediation before the expiry date.

Evidence trail

Sources and verification

Primary documentation and external technical references used in this article.

  1. 01Microsoft 365 documentationlearn.microsoft.com

About this page

Credited to

Dates

Published

Corrections

No corrections are listed for this page. Some review sweeps corrected pages without naming each one; those are in the corrections log.

Reader Interaction

Comments

Add a thoughtful note on Microsoft 365 Conditional Access Blocking Legacy Auth: AADSTS53003. Comments are checked for spam and held for moderation before appearing.

Loading comments...

Discover more

Learn More About KBY

Was this useful?

Reports go to the site owner and are used to correct pages. Corrections are listed at /corrections.

Engineering insights, direct to you.

Receive the latest Systems Engineering tutorials, production guides, Engineering Labs and operational best practices.