HomeNewsletterCommunityMVP FeedToolsArchiveBlogToday's NewsAboutServicesQuick Links★ Pro Subscribe free
← Back to Blog
Entra ID Entra IDConditional AccessSecurityToken ProtectionZero TrustWindows

Token Protection for Windows: Stop Stolen Sign-In Tokens From Working on Another Device

IA
Imran Awan
1 October 2026
Start here — what this actually is

When you sign in to Windows with a work account, Entra ID hands your device a kind of digital pass called a sign-in token. Your apps — Outlook, Teams, SharePoint — show that pass instead of asking you to type your password every five minutes. The problem: a stolen copy of that pass normally works from any computer, not just yours. An attacker who steals it from a compromised laptop can carry it over to their own machine and get into your mailbox without ever knowing your password, and without triggering MFA again.

Token Protection is a Conditional Access setting that closes this gap. It makes the pass only work on the exact device it was issued to — copy it elsewhere, and Entra ID refuses it. This post explains the idea in plain terms, then walks through turning it on safely, entirely through the Entra admin center. No PowerShell, no scripts — everything here is portal clicks and reading log entries.

Microsoft's own documentation on this feature is written for someone who already knows what a Primary Refresh Token is and what "binding" means. If you don't, the deployment guide reads like a wall of settings with no explanation of what problem they solve. This post fills that gap first, with an everyday example, before getting into the actual configuration steps — which are genuinely short once the concept makes sense.

The short version

Stolen sign-in tokens are one of the most common ways attackers get into cloud accounts without needing a password or beating MFA — it's called token theft, and antivirus doesn't stop it because nothing malicious is "running", a file is just being copied. Token Protection is a Conditional Access policy that requires Windows to cryptographically tie a sign-in token to the specific device it was issued on, so a copied token is rejected the moment it's used anywhere else. It currently covers Exchange Online, SharePoint Online, Microsoft Teams, Azure Virtual Desktop and Windows 365, on Windows 10 or later devices that are properly registered with Entra ID. You turn it on as a Conditional Access policy, start it in report-only mode to see who it would affect before it blocks anyone, then switch it to enforced. A handful of device types — Autopilot self-deploying devices, bulk-enrolled devices, Entra-joined Cloud PCs and Virtual Desktop session hosts — aren't supported yet and need to be excluded from the policy or their users will be blocked outright.

Watch this post — YouTube walkthrough
Why You Must Enable Microsoft Entra Token Protection Now
Why You Must Enable Microsoft Entra Token Protection Now
Endpoint Weekly
Watch on YouTube Subscribe at @EndpointWeekly

Who needs to read this

If you are…What this means for you
Service desk / 1st lineA user may suddenly be asked to "register" their device, or see a blocked sign-in with no obvious cause, after this policy goes live. Section 5 shows you exactly what that looks like and why.
Identity / Entra adminYou're the one building the Conditional Access policy. Section 4 is the full numbered walkthrough, in the exact order Microsoft recommends.
Security / SOCThis is a direct, free mitigation against one of the most-used post-phishing techniques (adversary-in-the-middle token theft). Worth prioritising even on a small pilot group of privileged accounts.
Anyone who manages Autopilot, Cloud PC or AVDRead the warning in Section 4 before you enforce anything — several of your device types are not supported yet and will be blocked, not just unprotected, unless you exclude them first.

The problem: a stolen token works anywhere, and MFA doesn't stop it

Start with how signing in normally works, because the attack only makes sense once you see the shortcut it exploits.

The first time you sign in to Windows with your work account, you type your password and complete MFA. Entra ID is satisfied you are who you say you are, and it hands your device something called a Primary Refresh Token, or PRT. Think of the PRT as a wristband you get at a festival after showing ID at the gate — you don't show your ID again every time you walk between stages, you just show the wristband. For the rest of the day, your apps — Outlook, Teams, OneDrive — use that wristband to get into things on your behalf, without bothering you for your password or MFA again.

That's good for convenience. It's also exactly what an attacker wants to steal, because the wristband itself is the proof — nobody checks whether the person wearing it is actually you.

How the theft actually happens

This isn't a theoretical attack. It's one of the most common techniques used right now, usually following an ordinary phishing email:

  1. A user receives a convincing phishing email and is tricked into signing in on a fake login page — often via what's called an "adversary-in-the-middle" proxy, which sits between the user and the real Microsoft sign-in page and copies everything that passes through, including the final token.
  2. The attacker now holds a working copy of that user's sign-in token. The user typed their real password and completed real MFA — both succeeded — but the attacker captured the token at the moment it was issued.
  3. The attacker copies that token onto their own machine, possibly on the other side of the world, and uses it to sign in to Outlook or SharePoint as that user.
  4. Because the token itself says "this request is already authenticated", Entra ID lets them straight in. No password prompt. No MFA prompt. From Entra ID's point of view, this looks identical to the real user opening their inbox.
⚠ Warning: this is why "we have MFA, so we're covered" is a dangerous assumption. MFA protects the moment you sign in. It does nothing to stop someone who has already captured the token that sign-in produced. Token theft is specifically designed to walk around MFA, not through it.

And it's invisible to normal endpoint security tools, because nothing about it looks like malware. A token is just a piece of text. Copying a piece of text from one machine to another doesn't trigger antivirus, doesn't write a suspicious file, and doesn't run a suspicious process. The theft itself often happens through a browser extension, an info-stealer, or a man-in-the-middle proxy — and from that point on, the "attack" is just normal-looking sign-in traffic from a token that happens to have been copied.

Why it happens: how sign-in tokens work, and what "binding" fixes

The underlying weakness is simple once you see it: a standard sign-in token doesn't know, or care, which computer is using it. It's "bearer" proof — whoever bears (holds) it gets treated as authenticated, the same way a festival wristband works for whoever is wearing it, not specifically for the person who was issued it.

The fix, in one paragraph

Imagine instead of a plain wristband, the festival gave you one that was cryptographically stapled to your actual wrist — it physically cannot be cut off and handed to someone else; it just stops working the moment it leaves your skin. That's the idea behind Token Protection. When your device registers with Entra ID, it generates a private cryptographic key that never leaves the device — it's stored in hardware, the same way a Windows Hello PIN is. Every time your device is issued a sign-in token, Entra ID "staples" that token to this device-specific key. The technical word for this is binding, and a token that has been stapled this way is called a bound token.

When an app shows a bound token to Entra ID, Entra ID checks that it's being presented together with proof from the same device's private key. Copy the token file to a different machine, and that proof is missing — the private key never left the original device, so it can never travel with a stolen token. The token Entra ID actually honours cannot be separated from the device it was issued to, which is the entire point.

A concrete before-and-after

Same attack as before, this time with Token Protection switched on:

StepWithout Token ProtectionWith Token Protection
User is phished, token capturedSucceeds — token captured in transitSucceeds — the capture itself isn't prevented
Attacker copies token to their own deviceSucceedsSucceeds — copying a piece of text can't be stopped
Attacker tries to use the token to sign inWorks. Entra ID accepts the token, attacker is in Outlook.Rejected. Entra ID sees the token isn't paired with the right device key and refuses it.

Notice what Token Protection does not claim to do: it doesn't stop the phishing email, it doesn't stop the token being captured, and it doesn't stop the token being copied. What it stops is the use of that copied token anywhere except the device it came from — which is the one step the attacker actually needs to succeed. Everything up to that point can go exactly as badly as before and the attack still fails at the last hurdle.

📋 Note: Microsoft is explicit that this is one layer of a broader defence, not a complete answer to token theft on its own. Pair it with the usual advice — blocking legacy authentication, requiring compliant or Entra-joined devices, and training users to recognise phishing. Token Protection is what catches the case where everything else already failed.

Why this isn't switched on for everyone already

Two honest limitations explain why this is a deliberate, careful rollout rather than a flip-the-switch setting.

First, it needs Microsoft Entra ID P1 — it's a Conditional Access feature, and Conditional Access itself requires that licence tier.

Second, and more important operationally: it only works for devices and apps that support it, and the device has to be properly registered with Entra ID in the right way. A device that was deployed using certain automated methods — Autopilot's self-deploying mode is the big one — registers itself in a way that doesn't currently support binding. If you enforce the policy everywhere on day one, every user on one of those device types is simply blocked from Outlook and SharePoint, with no warning, because their device can never satisfy a requirement it structurally can't meet. That's why the recommended rollout (covered in full in the fix section) always starts in a mode that only reports what would happen, never one that blocks anyone immediately.

How to verify: reading the sign-in logs, no scripts required

Before building anything, it helps to see what the logs already tell you — both to understand the feature, and because this is exactly how you'll check your rollout later. Everything here is done by clicking through the Entra admin center; nothing needs PowerShell or a script.

Entra admin center › Entra ID › Monitoring & health › Sign-in logs

Every sign-in that reaches a protected resource carries a field called Token Protection – Sign In Session, found by opening any individual sign-in event and looking at its Basic info pane. It only has two possible values, and this is the single most useful fact in this entire post for day-to-day triage:

✅ Bound — this is what you want to see
Meaning: this specific request used a token properly stapled to the device.
Gotcha: a single sign-in can involve several separate requests behind the scenes. All of them have to come back Bound for the overall sign-in to satisfy the policy — one Bound request next to one Unbound request still fails the policy as a whole.
⚠ Unbound — the request did not meet the requirement
Meaning: the token used for this request wasn't tied to the device, for one of five documented reasons (next table).
Conditional Access policy details pane showing Session Controls as Not satisfied, with Require token protection for sign-in sessions highlighted
A real sign-in that failed the policy. Opening the sign-in event and expanding Session Controls shows exactly which requirement wasn't met — here, Require token protection for sign-in sessions is marked Not satisfied. Names, device and location details have been redacted; the policy result itself is genuine.

Every Unbound result also carries a short status code explaining why. This is the part worth printing out and keeping next to the service desk, because it turns a vague "I can't open Outlook" ticket into an immediate diagnosis:

CodeWhat it means in plain terms
1002The device has no registered Entra ID identity at all. In practice: the device was never registered or joined to Entra ID — a personal, unregistered PC, most commonly.
1003The device is registered, but not in a way the policy accepts. This is the one you'll meet most often during rollout — it covers the unsupported device types listed in the fix section (Autopilot self-deploying devices, bulk-enrolled devices, Entra-joined Cloud PCs and AVD session hosts), and also devices that were registered without a genuinely fresh sign-in.
1005Unbound for some other, unspecified reason. Treat this as "needs a closer look", not a known category.
1006The Windows version on the device is too old to support binding. Check Windows is up to date.
1008The app isn't using Windows' built-in sign-in broker (Web Account Manager). Usually an older or third-party app build rather than a device problem — check for an update to the app itself.
Sign-in activity details showing Token Protection - Sign In Session as Unbound with statusCode 1002
The Activity Details panel for a single sign-in request, with Token Protection – Sign In Session: Unbound (statusCode: 1002) highlighted — code 1002, no Entra ID device registration at all. Tenant and service principal IDs shown here are already placeholder values from the source capture, not a real tenant.
⚠ Gotcha: Microsoft changed the internal name used for this in the logs partway through 2023 — older log entries say Binding, newer ones say SignInTokenProtection. If you're filtering sign-in logs for historical data as well as current data, you may need to account for both names turning up.
✅ Tip: Policy impact, available from the Conditional Access policy list, is the fastest way to see the shape of the problem across your whole tenant at a glance — it summarises how many sign-ins in recent history would have been allowed versus blocked by a policy, before you turn it on. Use it as your very first check, before you open individual sign-in log entries one at a time.
Entra Admin Center — Policy impact (report-only period)
Would be allowed
1,842
Would be blocked
37
Top blocked reason
Code 1003

The fix: turning on Token Protection safely, step by step

This is a Conditional Access policy, configured entirely in the Entra admin center. There's no PowerShell step anywhere in this process — and no Group Policy or Intune equivalent either, because Conditional Access is a cloud-native control with no on-premises counterpart. If you've built a Conditional Access policy before, the overall shape will be familiar; the parts specific to Token Protection are flagged clearly below.

Before you start: check compatibility

Token Protection only works for specific apps, on specific resources, from devices registered the right way. Check your users against this before building anything — the full detail is in the quick reference table further down, but the short version:

Step-by-step: creating the policy

  1. Sign in to the Microsoft Entra admin center with at least the Conditional Access Administrator role.
  2. Go to Entra ID › Conditional Access › Policies, and select New policy.
  3. Give it a clear, descriptive name — something your future self will recognise in a list of fifty other policies, e.g. "Require token protection – pilot group".
  4. Under Assignments › Users, in Include, choose a small pilot group — not everyone. Privileged accounts (global admins, finance, anyone handling sensitive data) are a sensible first target, since they're the accounts an attacker would want most.
  5. Still under Users, in Exclude, add your organisation's emergency access ("break-glass") accounts. This matters for every Conditional Access policy, not just this one — never let a new policy be able to lock out the account you'd use to fix a mistake.
  6. Under Target resources › Resources › Include › Select resources, choose exactly: Office 365 Exchange Online, Office 365 SharePoint Online, and Microsoft Teams. If your organisation uses the Windows App for Azure Virtual Desktop or Windows 365, add those too.
⚠ Warning — do not select the "Office 365" application group. Most Conditional Access guidance tells you to target the whole Office 365 app group for simplicity, and that advice is normally correct. It is wrong here. Selecting the whole group pulls in apps and services that don't support Token Protection, and those sign-ins fail with confusing, unrelated errors. Pick the individual applications listed above and nothing else.
  1. Under Conditions › Device platforms, set Configure to Yes, then under Include, select Windows only.
  2. Under Conditions › Client apps, set Configure to Yes. Under "Modern authentication clients", select only Mobile apps and desktop clients — leave every other box, including Browser, unchecked.
⚠ Gotcha: leaving "Browser" ticked here — or skipping this condition entirely — can block apps that sign in through a browser-based authentication flow, such as Teams accessed through a web browser rather than the desktop app. This is easy to miss because it doesn't look related to Token Protection at all; the symptom is just "Teams web stopped working for some users" with no obvious link back to this policy.
  1. Under Access controls › Session, select Require token protection for sign-in sessions, then Select.
  2. At the bottom, set Enable policy to Report-only. Do not enable it yet — this is the step most worth slowing down for.
  3. Select Create.
✅ Tip: leave the policy in report-only mode for long enough to cover a genuinely normal stretch of work — Microsoft's own advice is to let it run until you've captured both interactive and non-interactive sign-ins across a typical usage pattern, not just a day. A single Tuesday won't show you how the policy behaves when someone opens Outlook from a personal phone, works from a hotel, or logs in after a long weekend away.
Entra Admin Center — Conditional Access › Policies
Require token protection – pilot group Report-only

Handling unsupported device types before you enforce

This is the step most worth taking seriously, because getting it wrong doesn't just leave a gap in protection — it actively blocks real users from their mailbox.

A handful of ways to deploy a Windows device register it with Entra ID in a form that cannot satisfy a Token Protection requirement, at least not yet. If you enforce the policy without excluding them, every user on one of these device types is blocked from Exchange, SharePoint and Teams the moment enforcement goes live — not degraded, blocked. The device types are:

Unsupported device typeWhy it matters to you
Windows Autopilot devices using self-deploying modeCommon for kiosk, shared, and shop-floor devices provisioned with no user present during setup.
Devices deployed using bulk enrollmentCommon in large education or frontline-worker rollouts.
Cloud PCs from Windows 365 that are Entra joinedIf you're a Windows 365 shop, this likely affects every Cloud PC.
Azure Virtual Desktop session hosts that are Entra joinedAffects session-host-based AVD deployments specifically.
Power Automate hosted machine groups that are Entra joinedA narrower case, but worth checking if you use these.
Azure virtual machines enabled for Entra ID authenticationVM-based Windows deployments in Azure, not on-premises servers.

To find out whether this affects you before switching to enforced, look at the tokenProtectionStatusDetails field in sign-in logs during your report-only period, and watch for status code 1003 from the table above — that's the exact signal that a device's registration type isn't supported.

📋 Note: the fix isn't to abandon the rollout — it's to add a device filter condition to the same policy, under Conditions, that excludes those specific device types while the policy still enforces for everyone else. For example, you can exclude Entra-joined Cloud PCs by filtering on their system label, or exclude a specific Autopilot self-deploying profile by name. The deployment guide gives the exact filter syntax for each category — see the References section.

Moving from report-only to enforced

Once you've reviewed the report-only period and confirmed your pilot group's sign-ins are coming back Bound (or you've excluded the device types that can't yet), go back into the same policy and change Enable policy from Report-only to On. Expand the pilot group gradually from there rather than switching every user over at once.

⚠ Warning: Token Protection is currently only available for Windows and Apple devices. That means an attacker who knows your tenant enforces it can try reporting a different platform to sneak past the requirement. Microsoft's own advice is to pair this policy with two others: block access from unknown platforms, and require a compliant or Entra-joined device for all the platforms you do support. Token Protection on its own, with no other Conditional Access policies around it, leaves that specific side door open.

Proof it worked: what a protected sign-in looks like

Two things to check, and they tell you different parts of the story.

Check one: the sign-in logs show Bound

Open a recent sign-in from a pilot user, on a supported app and device, and look at Basic info › Token Protection – Sign In Session.

Entra admin center — Sign-in log detail
User: user@contoso.com
Application: Microsoft Outlook
Resource: Office 365 Exchange Online
Conditional Access result: Success
Token Protection – Sign In Session: Bound

Check two: the end-user experience should be invisible

For a correctly registered device and a supported app, nothing changes for the person signing in — there's no extra prompt, no visible difference at all. That's the design goal: the protection happens entirely behind the scenes. The only time a user sees something different is when they're on the wrong side of a gap:

Here's what each of those actually looks like on screen, so you recognise them the first time they come up in a ticket:

Microsoft dialog titled Register or enroll your device, telling the user they need to register or enroll their device to access the app
First prompt an unregistered-device user sees.
Microsoft dialog titled Register your device to access this app, website or service, with a blue Register button
The actual registration step — one click for the user.
Microsoft dialog titled Sorry, a security policy is preventing access, stating an organization security policy requiring token protection is preventing the application from accessing the resource
What an unsupported app shows once the policy is enforced.
✅ Tip: if a ticket comes in describing exactly one of these two experiences — "it's asking me to register my device" or "it says this app isn't supported" — and this policy is live, you've almost certainly found your cause before you've even opened the sign-in logs. Both messages are the policy working as designed, not a fault to fix.

Quick reference: apps, resources, and every status code

Supported apps (native desktop only)Notes
Outlook, Word, Excel, PowerPoint, OneNoteFull desktop apps, not the browser-based Office apps
Microsoft TeamsDesktop app
OneDrive, Microsoft Loop, Microsoft To Do—
Microsoft Copilot—
Windows AppUsed for Azure Virtual Desktop and Windows 365 access
Microsoft EdgeSign-in to the Edge profile only — not general web browsing
Exchange / Microsoft Graph PowerShell modulesSpecific sign-in modes only; see References for exact requirements
Visual Studio, Visual Studio Code, Power BI Desktop, PowerQuery for ExcelEach has specific version or sign-in-mode requirements — see References
Protectable resourcesNotes
Exchange Online—
SharePoint Online—
Microsoft Teams—
Azure Virtual DesktopVia the Windows App
Windows 365Via the Windows App
Status codeMeaning
1002No Entra ID device registration at all
1003Device is registered, but in an unsupported way (see unsupported device types above)
1005Unbound for an unspecified reason
1006Windows version too old
1008App isn't using the Windows sign-in broker (WAM)
RequirementValue
LicenceMicrosoft Entra ID P1 or higher
Minimum Windows versionWindows 10 or later (devices); Windows Server 2019 or later, hybrid joined (servers)
Device registration types supportedEntra joined, Entra hybrid joined, Entra registered
Rollout orderReport-only → review sign-in logs & Policy impact → exclude unsupported device types → enforce on pilot → expand
Pair withBlock unknown platforms; require compliant/Entra-joined device for other platforms

Glossary: the five terms this topic depends on

TermWhat it means here
Primary Refresh Token (PRT)The main "you're signed in" pass Entra ID issues to a Windows device after a successful sign-in. Apps use it behind the scenes instead of asking for your password repeatedly — the festival wristband from earlier in this post.
Token theftStealing a copy of a valid sign-in token (rather than a password) and reusing it from a different device to impersonate the real user, bypassing both the password and MFA checks that already succeeded for the real user.
BindingCryptographically tying a token to the specific device it was issued to, using a private key that physically never leaves that device. A bound token is useless if copied anywhere else.
Report-only modeA Conditional Access setting that logs what a policy would have done — allow or block — without actually enforcing it yet. The safe way to test any new policy before it can affect real users.
Conditional AccessEntra ID's rules engine for sign-ins: "if this user, on this device, doing this thing — then require this." Token Protection is one possible requirement you can attach to such a rule.

Frequently asked questions

Does this stop phishing emails from reaching users?

No. Token Protection does nothing to prevent a phishing email arriving, or a user clicking it, or even a token being captured in the first place. What it stops is that captured token being used from a different device than the one it was issued to — which is the specific step an attacker needs to actually get into the account.

Does this replace MFA, or Conditional Access device compliance policies?

No — it sits alongside them. MFA proves who you are at the moment you sign in. Device compliance proves your device meets a security bar. Token Protection protects the pass you're given after both of those already succeeded, against being stolen and reused elsewhere. All three address different points in the chain.

Will this break anything for users on day one?

It shouldn't, if you follow the recommended rollout: report-only first, review the logs, exclude any unsupported device types, then enforce gradually. The risk scenario is enforcing immediately across the whole organisation without that review — that's when users on unsupported apps or device types get blocked with no warning.

What about browsers in general — is my web-based Outlook or SharePoint protected?

Not by this. On Windows, Token Protection currently covers native desktop applications only. Browser-based access is a separate, still-in-preview capability limited to specific web apps that access Azure Resource Manager — it is not general browser protection, and Microsoft Edge's support here is specifically for signing in to your Edge profile, not for browsing Outlook on the web or SharePoint in a browser tab.

Is there a Group Policy or registry equivalent for this?

No. Token Protection is configured entirely as a Conditional Access policy in the cloud — there's no on-premises Group Policy object, registry key, or Intune device configuration profile involved. The only place this is managed is the Entra admin center.

What if a user signs in from their personal, unregistered phone or PC?

If the device has never registered with Entra ID at all, the sign-in log shows status code 1002 and, once enforced, the user is prompted to register their device rather than being let straight through. This is working as intended — an unregistered device has no cryptographic key to bind a token to in the first place.

References

Related reading on EndpointWeekly

Was this post helpful?
React below — no account needed
Share this post
LinkedIn X / Twitter Reddit Bluesky

More from EndpointWeekly

Entra ID
Do You Know Which Users Have ZERO Conditional Access Policy…
Conditional Access targets groups and apps, not "all users" by default. Gaps open…
Entra ID
Your Conditional Access "Compliant Device" Check Is Trusting a…
Require device to be marked as compliant reads a stored flag, not a live device check -…
Entra ID
How Many of Your Global Admins Are PERMANENTLY Global Admins?…
Standing privileged access is the top finding in every security review — and turning on…