โทเค็นที่ผูกกับผู้ส่งด้วย mTLS
เรียนรู้วิธีที่การผูกใบรับรองไคลเอนต์ด้วย TLS สองฝ่ายเปลี่ยนโทเค็นแบบผู้ถือให้เป็นโทเค็นที่ผูกกับผู้ส่ง ป้องกันผู้โจมตีนำโทเค็นที่ขโมยไปเล่นซ้ำ
โทเค็นที่ผูกกับผู้ส่งด้วย mTLS เป็นบทเรียน OAuth2 & OpenID Connect Deep Dive ฟรีบน CoddyKit นี่คือบทเรียนที่ 4 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน 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.
เรียนรู้ OAuth2 & OpenID Connect Deep Dive ด้วย AI tutor — ฟรี
เขียนและเรียกใช้โค้ดจริงในเบราว์เซอร์ของคุณ รับความช่วยเหลือทันทีจาก AI tutor 24/7 และเรียนรู้ต่อจากที่คุณหยุดบนเว็บหรือในแอป
- คอร์ส
- 12
- บทเรียน
- 48
คำถามที่พบบ่อย
บทเรียน “โทเค็นที่ผูกกับผู้ส่งด้วย mTLS” ฟรีหรือไม่
ใช่ — ข้อความเต็มของ “โทเค็นที่ผูกกับผู้ส่งด้วย mTLS” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส OAuth2 & OpenID Connect Deep Dive ให้อัปเกรดเป็น CoddyKit PRO คอร์ส OAuth2 & OpenID Connect Deep Dive มีบทเรียนทั้งหมด 4 บทเรียน
คุณจะเรียนรู้อะไรในบทเรียน “โทเค็นที่ผูกกับผู้ส่งด้วย mTLS”
เรียนรู้วิธีที่การผูกใบรับรองไคลเอนต์ด้วย TLS สองฝ่ายเปลี่ยนโทเค็นแบบผู้ถือให้เป็นโทเค็นที่ผูกกับผู้ส่ง ป้องกันผู้โจมตีนำโทเค็นที่ขโมยไปเล่นซ้ำ คุณปฏิบัติ OAuth2 & OpenID Connect Deep Dive ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน
คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน OAuth2 & OpenID Connect Deep Dive หรือไม่
ไม่จำเป็นต้องมีประสบการณ์มาก่อน OAuth2 & OpenID Connect Deep Dive บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 4 จากทั้งหมด 4 บทเรียน
บทเรียน “โทเค็นที่ผูกกับผู้ส่งด้วย mTLS” ใช้เวลานานแค่ไหน
บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย
ฉันเขียนและรันโค้ดในบทเรียน OAuth2 & OpenID Connect Deep Dive นี้ได้ไหม
ได้ บทเรียน OAuth2 & OpenID Connect Deep Dive ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ
บทเรียนทั้งหมดในหลักสูตรนี้
- ความยินยอมและประสบการณ์ผู้ใช้
- การแชร์ทรัพยากรข้ามต้นทาง (CORS)
- การออกจากระบบผ่านช่องทางด้านหน้าและด้านหลัง
- โทเค็นที่ผูกกับผู้ส่งด้วย mTLS