mTLSによる送信者制約付きトークン
相互TLSのクライアント証明書バインディングによってベアラートークンを送信者制約付きトークンに変え、盗まれたトークンの攻撃者によるリプレイを阻止する方法を学びます。
「mTLSによる送信者制約付きトークン」はCoddyKit上の無料OAuth2 & OpenID Connect Deep Diveレッスンです。 これはレッスン4/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはOAuth2 & OpenID Connect Deep Dive学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 OAuth2 & OpenID Connect Deep Diveコースには全4レッスンが含まれています。
このレッスンの一部はまだ翻訳されておらず、英語で表示されています。
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.
AI チューターと学ぶ OAuth2 & OpenID Connect Deep Dive — 無料
ブラウザでリアルコードを書いて実行し、24/7 の AI チューターから瞬時にサポートを受け、ウェブまたはアプリで続きから学習できます。
- コース
- 12
- レッスン
- 48
よくある質問
「mTLSによる送信者制約付きトークン」レッスンは無料ですか?
はい。「mTLSによる送信者制約付きトークン」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、OAuth2 & OpenID Connect Deep Diveコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 OAuth2 & OpenID Connect Deep Diveコースには全4レッスンが含まれています。
「mTLSによる送信者制約付きトークン」で何を学びますか?
相互TLSのクライアント証明書バインディングによってベアラートークンを送信者制約付きトークンに変え、盗まれたトークンの攻撃者によるリプレイを阻止する方法を学びます。 ブラウザで直接実行するハンズオンコードでOAuth2 & OpenID Connect Deep Diveを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。
OAuth2 & OpenID Connect Deep Diveを始めるのに経験は必要ですか?
事前経験は必要ありません。CoddyKitのOAuth2 & OpenID Connect Deep Diveは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン4/4です。
「mTLSによる送信者制約付きトークン」レッスンにはどのくらい時間がかかりますか?
ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。
このOAuth2 & OpenID Connect Deep Diveレッスンでコードを書いて実行できますか?
はい。すべてのOAuth2 & OpenID Connect Deep Diveレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。
このコースのすべてのレッスン
- 同意とユーザーエクスペリエンス
- Cross-Origin Resource Sharing(CORS)
- フロントチャネルとバックチャネルのログアウト
- mTLSによる送信者制約付きトークン