OAuth2 & OpenID Connect Deep Dive · Урок

DPoP (доказательство владения)

Разберитесь в DPoP — механизме криптографической привязки токенов доступа к клиенту, повышающем безопасность токенов и предотвращающем их кражу.

Урок 2 из 411 шагов

«DPoP (доказательство владения)» — бесплатный урок OAuth2 & OpenID Connect Deep Dive на CoddyKit. Это урок 2 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения OAuth2 & OpenID Connect Deep Dive, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс OAuth2 & OpenID Connect Deep Dive содержит 4 уроков всего.

Части этого урока еще не переведены и отображаются на английском.

What is DPoP?

Welcome! Today we'll explore DPoP, which stands for Demonstrating Proof-of-Possession. It's a crucial security enhancement for OAuth2 and OpenID Connect.

DPoP helps prevent a major security risk: stolen access tokens. It ensures that only the legitimate client (the app) can use an access token.

The Token Theft Problem

Imagine an attacker steals an access token. Without DPoP, they could use this token to access your protected resources, impersonating the legitimate client.

This 'token exfiltration' is a significant vulnerability. Standard bearer tokens don't inherently prevent this because anyone who 'bears' (possesses) the token can use it.

How DPoP Solves It

DPoP cryptographically binds an access token to a specific client's private key. Think of it like a digital signature that only the rightful client can produce.

Here's the core idea:

  • The client generates a unique key pair.
  • The public key is linked to the access token.
  • The client 'proves possession' of the private key with every request.

Client's Secret Key Pair

The process starts with the client application generating an asymmetric cryptographic key pair. This means it creates both a private key and a public key.

  • The private key is kept secret by the client.
  • The public key can be shared without compromising security.

This key pair is unique to the client session or instance.

Requesting a DPoP Token

When the client requests an access token from the Authorization Server, it includes a special header called DPoP in the request.

This DPoP header contains a JSON Web Token (JWT) signed by the client's private key. This JWT includes a hash of the client's public key.

The DPoP JWT & jkt Claim

The JWT in the DPoP header is the 'proof of possession'. It contains several claims:

  • jkt: The JSON Web Key Thumbprint of the client's public key.
  • htm: The HTTP method of the request (e.g., GET, POST).
  • htu: The HTTP URL of the request.
  • iat: Issued At time, preventing replay.

The Authorization Server validates this JWT and binds the jkt to the issued access token.

Using a DPoP-Bound Token

Once the client receives a DPoP-bound access token, it uses it to access protected resources on the Resource Server.

With every request to the Resource Server, the client must again send a new DPoP header containing a fresh JWT, signed by its private key, matching the current request's htm and htu.

Resource Server Validation

The Resource Server performs critical checks:

  1. It verifies the signature of the DPoP JWT using the public key derived from its jkt claim.
  2. It ensures the jkt in the DPoP JWT matches the jkt stored within the access token itself.
  3. It checks that the htm and htu claims in the DPoP JWT match the actual HTTP request.

If any check fails, access is denied. This ensures only the client possessing the private key can use the token.

DPoP vs. Mutual TLS (mTLS)

You might wonder about Mutual TLS (mTLS). Both DPoP and mTLS bind tokens to a client, but they operate at different layers:

  • mTLS: Binds at the TLS (transport) layer using client certificates.
  • DPoP: Binds at the application layer using cryptographic proofs in HTTP headers.

DPoP is often more flexible and easier to implement for a wider range of client types (especially public clients like mobile apps) compared to mTLS.

Test Your DPoP Knowledge

Which of the following are key benefits of using DPoP in OAuth2/OIDC implementations?

DPoP: A Stronger Bind

Congratulations! You've learned about DPoP, a powerful security mechanism.

DPoP enhances OAuth2 and OIDC by cryptographically binding access tokens to the client's private key, effectively preventing token exfiltration and making stolen tokens unusable by attackers.

This 'proof of possession' significantly strengthens the security posture of your applications by ensuring only the legitimate client can use its access tokens.

Можно начать бесплатно

Изучай OAuth2 & OpenID Connect Deep Dive с ИИ-репетитором — бесплатно

Пиши и запускай код прямо в браузере, получай мгновенную помощь от ИИ-репетитора 24/7 и продолжи учиться на сайте или в приложении.

Курсы
12
Уроки
48

Часто задаваемые вопросы

Урок «DPoP (доказательство владения)» бесплатный?

Да — полный текст урока «DPoP (доказательство владения)» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс OAuth2 & OpenID Connect Deep Dive, подпишись на CoddyKit PRO. Курс OAuth2 & OpenID Connect Deep Dive содержит 4 уроков всего.

Чему я научусь в уроке «DPoP (доказательство владения)»?

Разберитесь в DPoP — механизме криптографической привязки токенов доступа к клиенту, повышающем безопасность токенов и предотвращающем их кражу. Ты практикуешь OAuth2 & OpenID Connect Deep Dive с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.

Нужен ли мне опыт, чтобы начать OAuth2 & OpenID Connect Deep Dive?

Предыдущий опыт не требуется. OAuth2 & OpenID Connect Deep Dive на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 2 из 4.

Сколько времени занимает урок «DPoP (доказательство владения)»?

Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.

Можно ли писать и запускать код в этом уроке OAuth2 & OpenID Connect Deep Dive?

Да. Каждый урок OAuth2 & OpenID Connect Deep Dive включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.

Все уроки этого курса

  1. FAPI и API финансового уровня
  2. DPoP (доказательство владения)
  3. Протокол непрерывной оценки доступа (CAEP)
  4. Запросы авторизации через защищённый канал (PAR)
← Назад к OAuth2 & OpenID Connect Deep Dive