Skip to content

Find users with no recent successful sign-in.

Permissions

Requires delegated permissions User.Read.All, AuditLog.Read.All.

View source

from datetime import datetime, timedelta, timezone

from office365.graph_client import GraphClient
from tests import test_client_id, test_client_secret, test_tenant


def main():
    client = GraphClient(tenant=test_tenant).with_client_secret(test_client_id, test_client_secret)
    cutoff = datetime.now(timezone.utc) - timedelta(days=90)

    for u in client.users.select(
        ["id", "displayName", "userPrincipalName", "userType", "signInActivity"]
    ).execute_query():
        act = u.sign_in_activity
        last = act.lastSuccessfulSignInDateTime or act.lastSignInDateTime
        if last is None or last < cutoff:
            print(f"  {u.user_principal_name}  last sign-in: {last}")


if __name__ == "__main__":
    main()

← Back to Users