Loading views...

Device Bound Session Credentials

Creator
Creator
Seonglae ChoSeonglae Cho
Created
Created
2026 Aug 17 11:52
Editor
Edited
Edited
2026 Aug 17 11:53
Tags
Tags

DBSC

DBSC binds a session cookie to a private key generated in the device’s TPM or Secure Enclave, so even if the cookie is stolen, the session cannot be used on another device.
  • If the DBSC state is stored together with the regular session blob, a race condition can cause the binding to disappear and silently downgrade authentication to a regular bearer-cookie model.
  • During refresh, the cookie and challenge must be rotated every time. Because of real network latency, the system also needs overlap handling that briefly accepts the previous cookie. A bug that did not appear on localhost caused random logouts in production.
  • /dbsc/refresh must return 401 because a 302 redirect can cause a Chrome tab to hang indefinitely.
  • A challenge mismatch is not necessarily an attack; it can normally occur because of concurrent refreshes or retries. If the signature is valid, do not revoke the session. Instead, issue a new challenge and retry.
  • In SAML/SSO flows, the initial DBSC registration POST can be sent without authentication because of SameSite=Lax, so binding should happen on the next same-site navigation.
 
 
Everything I Learned Shipping Device Bound Session Credentials
We shipped Device Bound Session Credentials at Report URI, open-sourced the server-side implementation, and then discovered a long list of things the specification doesn't prepare you for. Some caused random logouts. One could deadlock a browser tab indefinitely. Two silently turned a device-bound session back into
Everything I Learned Shipping Device Bound Session Credentials
 
 

Recommendations