A bound token, copied, is refused where the broker checks its key.
A stolen access token usually works from any machine. Once binding is switched on, Pramaan can bind a token to a software key held on the device it was issued to. A copy sent from a machine without that key is refused where the broker, Pramaan's server, checks the key. The browser session cookie is not device-bound. This page says what is bound to what, where the check runs, and what binding does not cover.
What is bound to what
The phone and desktop clients register a dedicated software key for binding, kept in the device's secure store; it is not the key that approves sign-ins. When binding is enforced, the token is bound only when the client proves its key as the token is issued. The client sends a proof made by its key, and the broker checks that the key belongs to one of the signed-in person's enrolled devices. The token record then keeps the key's thumbprint: a bound token names only one key.
After that, the client signs a fresh proof wherever a proof is asked for. A proof is a short signed token carrying the method and URL of the request, the time and a unique id. The broker accepts a proof within 120 seconds of its time, accepts each id once, and refuses a proof made for another method or URL.
What happens to a copy
Where the check runs, a bound token sent without a proof from its own key is refused with HTTP 401. That includes a valid, correctly signed proof made by another device's key: the key is not the one the token names. A proof captured on the way cannot be used again, because its id is spent and it names one method and URL.
The broker checks the proof on its own token and API calls, not on every path; the technical detail below lists where.
What binding does not cover
Run it live
In the lab your browser makes a key that the page can sign with but cannot read out. Take a bound token and try it from another machine. The lab uses a demonstration account.
For your engineers
Technical detail: where the broker checks the key
Binding follows DPoP (RFC 9449). The binding key is a software P-256 key, not held in a TPM or StrongBox. The lab's key is a non-extractable WebCrypto key.
The proof is checked on the broker's own token and API endpoints, not on every path. For a bound token:
/userinfoneeds a proof once token-binding enforcement is on.- The broker's API calls that list applications, private apps, devices and sessions, and the session handoff need a proof only when a second switch is on as well.
- Minting a ticket for browser remote access (RDP, SSH or VNC) and an AI agent's tool authorisation need a proof whatever that switch says.
- The SSH bastion and the raw-TCP listener refuse a bound token outright, because they cannot carry a proof.
- Token introspection reports the bound key to the application that asks, which must check the proof itself.
Questions
Is every access token bound to a device?
No. With binding enforced, a token is bound only when the client proves its key as the token is issued. A token issued to a sign-in with no enrolled device, and an application that sends no proof carries no binding, and a copy of it works from any machine until it expires.
What can someone do with a copied bound token?
Where the broker checks the key, nothing without that key: the request is refused with HTTP 401. The proof is checked on the broker's own token and API calls, not on every path, and with binding switched off a copy works like the original until it expires.
Is the binding key held in hardware?
No. It is a software key in the device's secure store, chosen so the client can sign proofs without a prompt. Someone who copies both the token and that store has both halves of the binding.
Does binding protect a browser session?
No. Binding covers the access token only. The browser session cookie is not device-bound: its Secure, HttpOnly, SameSite=Lax and __Host- attributes make it harder to steal, not tied to one machine.
Can a captured proof be replayed?
Not where the broker checks it. Each proof carries a unique id that the broker accepts once, it is valid for 120 seconds either side of its time, and it names the method and URL of the request, so it cannot be moved to another address.
Talk to us, or try it first
-
Book a walkthrough
Against your own apps, not slides.
-
Run the lab
It uses a demonstration account; none of your data is involved.
-
See pricing
Published floors, named-user bands and what every tier includes.