İçeriğe geç

DPoP — jeton neden çalınamaz

Her erişim jetonu, istemcinin DPoP anahtarının parmak izine (cnf.jkt) bağlıdır. Her istekte o anahtarla imzalı kısa bir kanıt (DPoP başlığı) gönderilir: yöntem (htm), adres (htu, sorgu dizesi olmadan), zaman (iat, ±60 sn), tek kullanımlık kimlik (jti), sunucu nonce’u (nonce) ve jetonun özeti (ath). Çalınan jeton, anahtar olmadan işe yaramaz.

  • Kabul edilen algoritmalar: ES256 ve EdDSA. RSA yok.
  • Sunucu nonce’u 5 dakikada bir döner; 401 + WWW-Authenticate: DPoP error="use_dpop_nonce" gelirse yanıttaki DPoP-Nonce ile kanıtı yeniden üret.
  • Tarayıcıda anahtarı crypto.subtle.generateKey({ name: "ECDSA", namedCurve: "P-256" }, false, ["sign"]) ile üret (dışa aktarılamaz) ve IndexedDB’de tut; jetonları localStorage’a yazma.
  • Refresh jetonu da aynı anahtara bağlıdır; anahtar değişirse üyeden yeniden izin istenir.