Jetons liés à l’expéditeur avec mTLS
Découvrez comment la liaison à un certificat client TLS mutuel transforme les jetons porteurs en jetons liés à l’expéditeur, empêchant les attaquants de rejouer des jetons volés.
Jetons liés à l’expéditeur avec mTLS est une leçon OAuth2 & OpenID Connect Deep Dive gratuite sur CoddyKit. Ceci est la leçon 4 sur 4. Tu peux lire la leçon complète ci-dessous gratuitement — puis la pratiquer en direct dans le navigateur avec un éditeur de code intégré et un tuteur IA 24/7. Elle fait partie du parcours d'apprentissage OAuth2 & OpenID Connect Deep Dive, et ta progression se synchronise sur le web et l'application CoddyKit. Le cours OAuth2 & OpenID Connect Deep Dive comprend 4 leçons au total.
Certaines parties de cette leçon n'ont pas encore été traduites et s'affichent en anglais.
The Bearer Token Weakness
A plain bearer token works for anyone who holds it. If it leaks via logs, a proxy, or an XSS bug, the thief can use it freely. Sender-constrained tokens fix this by binding the token to the legitimate client.
What Is mTLS?
Mutual TLS means both sides present certificates: the server proves its identity (as usual) and the client also presents a certificate. The authorization server can then bind issued tokens to that client certificate.
RFC 8705
This is standardized in RFC 8705 (OAuth 2.0 Mutual-TLS Client Authentication and Certificate-Bound Access Tokens). It covers both client authentication via mTLS and certificate binding of access tokens.
The cnf Claim
When the AS issues a certificate-bound token, it records a confirmation (cnf) claim containing the SHA-256 thumbprint of the client certificate under the key x5t#S256.
{
"sub": "client-app",
"cnf": {
"x5t#S256": "bwcK0esc3ACC3DB2Y5_lESsXE8o9ltc05O89jdN-dg2"
}
}Resource Server Check
When the client calls an API over mTLS, the resource server computes the thumbprint of the presented certificate and compares it to the token's cnf.x5t#S256. If they differ, the token is rejected.
thumb = sha256(der_of_client_cert)
if base64url(thumb) != token.cnf['x5t#S256']:
reject('certificate binding mismatch')Why a Stolen Token Is Useless
Even with the token, an attacker cannot present the client's private key, so they cannot complete the mTLS handshake with the matching certificate. The thumbprint will not match, and the API rejects them.
mTLS Client Authentication
RFC 8705 also lets clients authenticate at the token endpoint with their certificate instead of a shared secret, using methods tls_client_auth (PKI) or self_signed_tls_client_auth.
mTLS Endpoint Aliases
Because mTLS needs a separate TLS configuration, providers publish mtls_endpoint_aliases in discovery so clients hit the certificate-bound versions of the token and other endpoints.
{
"mtls_endpoint_aliases": {
"token_endpoint": "https://mtls.op.example.com/token"
}
}mTLS vs DPoP
Both achieve sender-constraint:
- mTLS — relies on TLS-layer certificates, great for server-to-server and infrastructure with PKI.
- DPoP — application-layer proof JWTs, better for browser/public clients that cannot manage client certs.
Operational Considerations
mTLS requires certificate provisioning, rotation, and a TLS terminator that forwards the client cert to your app. Plan for cert lifecycle and ensure your reverse proxy passes the verified certificate to the resource server.
When to Adopt It
Choose mTLS-bound tokens for high-assurance, regulated, or financial-grade APIs and trusted backend services where certificate management is feasible. It dramatically raises the cost of token theft.
Quick Check
Test your mTLS binding knowledge.
Recap
mTLS sender-constrained tokens (RFC 8705) bind a token to the client's certificate.
- The token carries a
cnf.x5t#S256certificate thumbprint. - Resource servers match the presented cert's thumbprint; a stolen token without the private key fails.
- mTLS also enables certificate-based client authentication and uses mtls endpoint aliases.
- Compare with DPoP for public clients.
Questions Fréquemment Posées
La leçon « Jetons liés à l’expéditeur avec mTLS » est-elle gratuite ?
Oui — le texte complet de « Jetons liés à l’expéditeur avec mTLS » est gratuit à lire ici sur le web. Pour la pratiquer de manière interactive (un éditeur de code intégré et un tuteur IA 24/7) et déverrouiller le reste du cours OAuth2 & OpenID Connect Deep Dive, passe à CoddyKit PRO. Le cours OAuth2 & OpenID Connect Deep Dive comprend 4 leçons au total.
Qu'est-ce que j'apprendrai dans « Jetons liés à l’expéditeur avec mTLS » ?
Découvrez comment la liaison à un certificat client TLS mutuel transforme les jetons porteurs en jetons liés à l’expéditeur, empêchant les attaquants de rejouer des jetons volés. Tu pratiques OAuth2 & OpenID Connect Deep Dive avec du code pratique que tu exécutes directement dans le navigateur, et un tuteur IA 24/7 répond à tes questions au fur et à mesure que tu avances dans la leçon.
Dois-je avoir de l'expérience pour commencer OAuth2 & OpenID Connect Deep Dive ?
Aucune expérience préalable n'est requise. OAuth2 & OpenID Connect Deep Dive sur CoddyKit est structuré pour les débutants jusqu'aux apprenants avancés, donc tu peux commencer ici ou depuis le début et avancer à ton rythme. Ceci est la leçon 4 sur 4.
Combien de temps prend la leçon « Jetons liés à l’expéditeur avec mTLS » ?
La plupart des leçons CoddyKit prennent environ 5–10 minutes. Chacune est courte et interactive, tu progresses régulièrement et tu repiques exactement où tu t'es arrêté sur le web et l'app.
Peux-tu écrire et exécuter du code dans cette leçon OAuth2 & OpenID Connect Deep Dive ?
Oui. Chaque leçon OAuth2 & OpenID Connect Deep Dive inclut un éditeur de code intégré, tu écris et exécutes du vrai code directement dans ton navigateur et tu reçois des retours IA instantanés — aucune configuration locale requise.
Toutes les leçons de ce cours
- Consentement et expérience utilisateur
- Partage de ressources entre origines (CORS)
- Déconnexion par canal frontal ou dorsal
- Jetons liés à l’expéditeur avec mTLS