Skip to content

Inactive guest identities are disabled or removed from the tenant not reporting correctly #1589

Open

Description

We cleanup our inactive guest accounts monthly for anything older than 90 days.

The latest v2 Assessment is finding 12K+ inactive guest accounts. I skimmed the list provided and they are reporting a current active date.

Checking the lastSignInDateTime, lastNonInteractiveSignInDateTime, and lastSuccessfulSignInDateTime (The timestamp of the last truly successful interactive or non-interactive sign-in) I'm finding the lastSuccessfulSignInDateTime is not accurate for the guest user.

Example:

UserType : Guest
LastSignInDateTime : 1/26/2026 2:41:28 PM
LastNonInteractiveSignInDateTime : 10/6/2026 6:04:18 PM
LastSuccessfulSignInDateTime : 1/26/2026 2:41:31 PM

lastSuccessfulSignInDateTime should be the date of the LastNonInteractiveSignInDateTime but it is not.

For a Member user seems to be working as expected.

UserType : Member
LastSignInDateTime : 10/11/2026 8:39:00 PM
LastNonInteractiveSignInDateTime : 10/12/2026 4:59:46 AM
LastSuccessfulSignInDateTime : 10/12/2026 4:59:46 AM

Activity

  1. astaykov commented on Oct 12, 2026

    @astaykov
    Collaborator

    I am confused, Is the test failing, or is the test showing wrong data or is the graph returning wrong data? What comparison did you do?
    And, is the test result inaccurate in a way?

  2. mgraceffa commented on Oct 12, 2026

    @mgraceffa
    Author
  3. mgraceffa commented on Oct 12, 2026

    @mgraceffa
    Author
  4. astaykov commented on Oct 13, 2026

    @astaykov
    Collaborator

    No need. I think I understand the issue. I will validate, resp. look at our reference tenant for reproducible evidence and come back if I need more info.

  5. mgraceffa commented on Oct 13, 2026

    @mgraceffa
    Author
  6. astaykov commented on Oct 16, 2026

    @astaykov
    Collaborator

    Oh, now I see your situation.

    And that is actually correct handling of how the test is currently designed to assess inactive guests.
    As per signInActivity logging behavior:

    • lastSuccessfulSignInDateTime - The date and time of the user's most recent successful interactive or non-interactive sign-in. Use this property if you need to determine when the account was truly accessed. This field can be used to build reports, such as inactive users.
    • lastNonInteractiveSignInDateTime - The last non-interactive sign-in date for a specific user. You can use this field to calculate the last time a client attempted (either successfully or unsuccessfully) to sign in to the directory on behalf of a user.
    • lastSignInDateTime - The last interactive sign-in date and time for a specific user. This property records the last time a user attempted an interactive sign-in to the directory - whether the attempt was successful or not. Note: Since unsuccessful attempts are also logged, this value might not accurately reflect actual system usage. For tracking actual account access, please use the lastSuccessfulSignInDateTime property.

    Consider a situation where you have a custom application that regularly polls some data on-behalf-of the user using an authorization it obtained years ago. The user never signed in again. The application still keeps polling data and keeps refreshing its own token. You will see updates of the non interactive sign-ins for as long as your app is alive, not as long as the user is actually using the app. Completely unrelated to the user activity. Same is if you have a web app that has endless session. The user might be coming back to the app, but the app will never ask the user to verify their identity again, for example - redirecting the user authenticate again. And while this might be a desired outcome, this is not what Zero Trust principle of verify explicitly recommends.

    The Zero Trust Assessment evaluates not against a slight chance of infinite session, but against the Zero Trust Principles.

    For what I can say, your quoted logs for the second guest show:

    • A real, successful, sign-in and verification of the user account happened on 2/25/2026 at 6:37PM. This event, potentially, created a cookie at user's browser and potentially a refresh token at some app.
    • Last recorded attempt for an interactive sign-in happened on 2/25/2026 at 09:48 PM - the directory does not record the result - success or failure, unless you have exported the actual sign-in logs and trace back.
    • The last attempted non-interactive sign-in (that means a sign-in from a client using a valid refresh token) happened on 9/25/2026. This event is not a proof that the user was actually using the application.

    From these events, the only real user identity verification (Zero Trust Principle of verify explicitly) happened back in February. Based on that, Zero Trust assessment tool identifies that the controls you have applied in your tenant (and applications) do not follow the principles of Zero Trust and marks all those users as invalid as per Zero Trust Principles.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    invalidThis doesn't seem right

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions