Device code sign-in in Entra External ID: sign-in logs show only “Previously satisfied”, no password/Email OTP steps

Nawaf Al-Faleh 0 Reputation points
2026-10-28T14:43:20.3666667+00:00

Environment. A Microsoft Entra External ID tenant (external configuration). The user is a local account: sign-in type emailAddress, issuer <tenant>.onmicrosoft.com. The user signs in through a public client application using the OAuth 2.0 device authorization grant against https://<tenant>.ciamlogin.com/<tenant>/oauth2/v2.0/devicecode. A Conditional Access policy applies to this user only, targets All resources and requires multifactor authentication. Email one-time passcode is enabled as an authentication method. Security defaults are disabled.

What happened. The user's sign-in sessions were revoked by an administrator before the sign-in, and the sign-in event then showed a new Session ID, different from the earlier one. The device-code page was opened in Chrome with a profile signed in to a Google account, in a non-private window. The person signing in reports entering the password and then receiving an email message. It is not established from the logs that both factors were completed. The token was issued. The interactive sign-in event for the client application shows:

  • authenticationRequirement = multiFactorAuthentication;
  • the Conditional Access policy result = success;
  • authenticationDetails with a single row: authenticationMethod = "Previously satisfied", authenticationStepResultDetail = "MFA requirement satisfied by claim in the token";
  • authenticationMethodsUsed = [] and mfaDetail = null.

The non-interactive event of the same correlation shows the same. A complete JSON export taken about 50 minutes later is identical. No event in the user's interactive or non-interactive logs shows a Password row with succeeded = true, or an Email OTP row, for that sign-in.

In an earlier sign-in by the same user, one event of the same correlation shows error 50072, with the policy result failure. Later events with no application name show mfaDetail.authMethod = "Email verification code".

Questions.

  1. For device code sign-ins in an external tenant, where are the first-factor (password) and second-factor (email one-time passcode) steps recorded? Are they in the user's sign-in logs, under a different event or filter, in the audit logs, or in another report?
  2. If password and Email OTP are both successfully completed, can this flow still produce only "Previously satisfied" entries? What evidence distinguishes that case from reuse of an existing MFA claim?
  3. In the external tenant's sign-in logs, how can one distinguish an email verification code used to satisfy an MFA requirement from one used for self-service password reset or for verifying a newly registered method?
  4. Is there a supported way, without granting new permissions, to obtain per-step authentication details for such a sign-in, for example a field, a report or a delay after which authenticationDetails is completed?

No personal data, tokens or secrets are included. Identifiers can be provided on request.

Microsoft Security | Microsoft Entra | Microsoft Entra External ID
0 comments No comments

1 answer

Sort by: Most helpful
  1. AI answer

    2026-10-28T14:44:52.9433333+00:00

    The current record does not prove that password and Email OTP were completed; wait up to two hours for sign-in aggregation, then treat a still-unchanged “Previously satisfied / MFA requirement satisfied by claim in the token” entry as evidence that the logged token request reused an MFA claim, not as evidence of newly completed factors.^1^

    Where the authentication steps should appear

    For this browser-delegated device-code flow, authentication occurs in the browser at the verification URI; the public client only polls the token endpoint.^2^ The relevant per-step report is therefore the user’s sign-in log, primarily:

    Entra admin center → Entra ID → Monitoring & health → Sign-in logs → event → Authentication Details

    That tab is intended to show:

    • the sequence of authentication methods;
    • whether each attempt succeeded;
    • why it succeeded or failed;
    • whether MFA was completed or satisfied by an existing token claim.^3^

    Check both Interactive user sign-ins and Non-interactive user sign-ins, grouping records by correlationId. Also retain requestId, sessionId, and the unique token identifier: correlation IDs group related requests but depend on client-supplied values, while request IDs correspond to issued tokens.^3^

    Audit logs are not the normal per-step MFA report. They are useful for determining whether a nearby email-code operation belonged to password reset, method registration, or another directory workflow.

    Why “Previously satisfied” is not proof of two newly completed factors

    External tenants support exactly the described combination: Email with password as the first factor and Email OTP as the second factor. In that flow, the user signs in with the primary method, requests the emailed code, and enters it within ten minutes.^4^

    If those operations are represented completely, Authentication Details should contain the method sequence rather than only a token-claim row. However, sign-in details are asynchronously aggregated. Microsoft documents two relevant temporary inaccuracies:

    • “Satisfied by claim in the token” can initially be displayed incorrectly.
    • The Primary authentication row can initially be absent.^1^

    MFA records can take up to two hours to aggregate, although that is uncommon.^5^ Therefore, the JSON export at 50 minutes was not yet definitive.

    After two hours:

    • Password and Email OTP rows with successful results support fresh completion.
    • A remaining sole Previously satisfied / satisfied by claim in the token row supports claim reuse for that logged request.
    • authenticationRequirement = multiFactorAuthentication and Conditional Access success establish that the access requirement was met, but not how it was met. Microsoft explicitly warns not to rely on authenticationRequirement alone when an earlier MFA claim may have been accepted.^1^

    A new sessionId, session revocation, the reported UI experience, or receipt of an email does not substitute for successful per-step records. Revoking sessions invalidates refresh tokens, but already-issued access or session tokens remain effective until their applicable expiration.^6^

    Distinguishing MFA Email OTP from reset or registration

    Correlate the sign-in event with the audit logs by user and timestamp:

    1. Open Entra ID → Users → Audit logs.
    2. Filter Service = Self-service Password Management.
    3. Look for activities such as password-reset flow progress or self-service password reset.
    4. For method registration, inspect Security → Authentication Methods events.^7^

    SSPR has a distinct journey: the user selects Forgot password?, verifies using Email OTP or SMS, and is then prompted to create a new password.^8^ Registration likewise has dedicated audit activities such as User started security info registration and User registered security info.^9^

    Thus:

    • Email OTP in Authentication Details for the correlated sign-in, without reset/registration audit activity, supports MFA use.
    • Reset-flow audit activity supports SSPR use.
    • Authentication Methods registration activity supports method verification or registration.
    • mfaDetail.authMethod = "Email verification code" alone does not establish which business flow generated the code; correlate it with these records.

    The earlier AADSTS50072 means that the user needed to enroll for second-factor authentication; it does not prove successful enrollment or successful MFA in the later event.^10^

    Obtaining more detail without new permissions

    There is no documented field, separate MFA activity report, or Graph endpoint that reconstructs authentication steps absent from the finalized sign-in record. The supported actions are:

    1. Wait until two hours after the event and export the complete JSON again.
    2. Review every interactive and non-interactive record for the user, time range, application, and correlation ID.
    3. Review the corresponding SSPR and Authentication Methods audit events.
    4. If diagnostic settings were already sending logs to Log Analytics, query all records by correlation ID. Log Analytics can retain intermediate requests that the portal merges into one final event.^11^
    SigninLogs
    | where CorrelationId == "<correlation-id>"
    | order by CreatedDateTime asc
    | project CreatedDateTime, Id, IsInteractive,
              ResultType, ResultDescription,
              AuthenticationRequirement, AuthenticationDetails
    

    This helps only if Azure Monitor export was configured when the sign-in occurred. It cannot recover earlier intermediate records retroactively.

    Microsoft Graph returns the sign-in record rather than a richer hidden authentication trace and requires AuditLog.Read.All plus a supported directory role for administrative access.^12^ If those permissions are not already available, there is no documented permission-free API alternative. If the record remains incomplete after aggregation and Log Analytics was not enabled, open a Microsoft support case with the UTC timestamp, tenant type, user object ID, application ID, correlation ID, request IDs, and sanitized JSON exports.


    References

    1. Use the sign-in logs to review Microsoft Entra multifactor authentication events
    2. Microsoft identity platform and the OAuth 2.0 device authorization grant flow
    3. Learn about the sign-in log activity details
    4. Multifactor authentication in external tenants
    5. Frequently asked questions around Microsoft Entra monitoring and health
    6. Revoke user access in Microsoft Entra ID
    7. Reporting options for Microsoft Entra password management
    8. Enable self-service password reset
    9. Microsoft Entra audit log categories and activities
    10. Microsoft Entra authentication and authorization error codes
    11. Analyze Microsoft Entra activity logs with Log Analytics
    12. Get signIn
    AI-generated content may be incorrect. Read our transparency notes for more information.

    Was this answer helpful?

Your answer

Answers can be marked as 'Accepted' by the question author and 'Recommended' by moderators, which helps users know the answer solved the author's problem.