M365Con 2027 – free online conference · 11–22 Jan 2027 · 120 sessions→ m365con.net

Blog · Mirko Peters

Supercharging Zero Trust with Continuous Access Evaluation (CAE)

By ·

Welcome back to the podcast and our ongoing deep dive into identity security architecture. If you have ever rolled out a brand-new, iron-clad Conditional Access pol…

▶ BLOGSupercharging Zero Trustwith Continuous Access…M365.FM
Titelbild: Supercharging Zero Trust with Continuous Access Evaluation (CAE)

Welcome back to the podcast and our ongoing deep dive into identity security architecture. If you have ever rolled out a brand-new, iron-clad Conditional Access policy in Microsoft Entra ID—only to watch a compromised user or an out-of-policy device continue merrily along their way for another eight hours—you are not alone. Identity administrators face this frustrating reality every single day. The secret truth behind how Microsoft 365 handles authentication is that your security boundaries are only as strong as your tokens. Policies do not enforce themselves; tokens do.

In this comprehensive blog post, we are going to expand on our recent podcast conversation by breaking down how Continuous Access Evaluation (CAE) changes the game. By moving away from static tokens and leaning into real-time, event-driven revocation, you can dramatically shrink your organization's exposure window. To catch up on the foundational mechanics of how these tokens flow under the hood, make sure you listen to our companion episode, Modern Authentication and Token Lifecycle in Microsoft 365.

TL;DR (The Big Idea)


Plain-English Mental Model

To understand why Continuous Access Evaluation is so transformative, we first need to look at the actors involved in modern authentication. Think of your authentication architecture like an exclusive club:


Why Your New Policy Didn't Hit Today

One of the most common helpdesk tickets following a security policy update is: "I just blocked legacy countries, but user X is still downloading files from an unmanaged network!" Why does this happen? The answer lies in token caching.


Control Levers (in priority order)

  1. Turn on CAE for supported resource providers (Exchange Online, SharePoint Online, Microsoft Graph, and Teams).
    • Effect: Policy and risk changes can invalidate tokens mid-session immediately.
  2. Set Sign-in frequency (configured via per-app CA Session controls).
    • Examples: 8 to 12 hours for standard productivity apps; 1 to 4 hours for high-sensitivity administrative portals.
  3. Require reauth on context change.
    • CA conditions to enforce: Sign-in risk ≥ Medium, User risk ≥ High, Device compliance required, or Hybrid/AADJ only.
  4. Use Conditional Access App Control (Microsoft Defender for Cloud Apps session proxy) for unmanaged or risky sessions.
    • Enforce strict policies like no download/print/sync to reduce your blast radius while legacy tokens phase out.
  5. Revoke tokens on demand during active rollouts or security incidents.
    • Targeted approach: Invalidate refresh tokens for specific affected users or groups.
    • Broad approach: Force sign-out and revoke tokens across the entire tenant for emergency posture adjustments.
  6. Modern auth session settings.
    • Always prefer CA Session controls over legacy token lifetime policies, which have been deprecated for most modern workloads.

Ready-to-Use Policies (Minimal but Effective)

  1. Block when User risk = High
  1. Step-Up on Sign-in risk
  1. Short sign-in frequency for administrators
  1. Contain unmanaged devices

Operational Playbooks

Playbook A — "Make the new CA rule stick now"

Playbook B — "Risk spike/compromise containment"


Admin Commands & Endpoints (Copy/Paste)

Tip: Always prefer Microsoft Graph for future-proofing your automations. Build runbooks that accept a UPN list and loop these calls with built-in backoff logic.


Hunting & Monitoring (KQL)

Who kept using old tokens after a Conditional Access change?

SigninLogs
| where TimeGenerated >= ago(24h)
| extend ATIssue = parse_json(AuthenticationDetails)[0].Succeeded
| extend CAResult = tostring(Status)
| project TimeGenerated, UserPrincipalName, AppDisplayName, RiskDetail, ConditionalAccessStatus, CAResult, ATIssue
| where ConditionalAccessStatus in ("notApplied","success") and RiskDetail == "none"

Silent RT churn spikes (possible scripted refresh token abuse)

SigninLogs
| where AuthenticationRequirement == "singleFactorAuthentication"
| where TokenIssuerType == "AzureAD" and ResultType == 0
| summarize count() by UserPrincipalName, bin(TimeGenerated, 30m)
| where count_ > 50

Metrics That Matter


30/60/90 Execution Plan

Days 0–30 – Foundations

Days 31–60 – Token Discipline

Days 61–90 – Zero Trust Tuning


Common Pitfalls (and Safer Defaults)


CAB One-Liner (Exec-Friendly)

We tied policy directly to the token lifecycle. With Continuous Access Evaluation and targeted revocation, risk or policy changes now take effect immediately, shrinking exposure windows without grinding daily work to a halt.

Conditional Access Microsoft Entra ID Microsoft 365 Zero Trust

RSS