DPoP ile OAuth token'larını istemci anahtarına bağlamak
Duende'nin Cadılar Bayramı temalı yazısı, RFC 9449 kapsamındaki DPoP'un nasıl çalıştığını anlatıyor. Access token'ı istemcinin anahtar çiftine bağlamak, çalınan bir bearer token'ın API'de tekrar kullanılmasını engelliyor. Yazı token isteği, cnf.jkt claim'i ve API tarafındaki proof doğrulamasını adım adım gösteriyor ve her adım için Duende kütüphanelerini özetliyor.
Kilit noktalar
- Access token'lar, istemcinin public key'inin thumbprint değerini taşıyan cnf.jkt claim'i içerir.
- Her API isteği, özel anahtarla imzalanmış ve htm, htu, iat, ath claim'lerini taşıyan taze bir DPoP proof JWT'si ile gönderilmeli.
- API, ath, cnf.jkt ve iat değerlerini kontrol eder ve daha önce görülmüş bir jti içeren proof'u reddeder.
- Duende.AccessTokenManagement, istemci tarafında anahtar üretimini ve proof imzalamayı üstlenir.
- Duende.AspNetCore.Authentication.JwtBearer.Extensions, .NET API'lerinde DPoP proof'larını özel middleware yazmadan doğrular.
Duende Software, Cadılar Bayramı temalı eğlenceli bir yazıyla DPoP'u anlatıyor. DPoP, RFC 9449'da tanımlanan ve access token'ı istemcinin anahtar çiftine bağlayan bir OAuth eklentisi. Düz bearer token'ı elinde tutan herkes için geçerli olduğundan, proxy log'undan sızan bir token tekrar kullanılabilir. DPoP'ta istemci özel anahtarıyla bir proof imzalar, authorization server ise anahtarın thumbprint değerini token'ın cnf.jkt claim'ine yazar.
API çağrısında istemci token'ı DPoP şemasıyla ve taze bir proof ile gönderir. API; htm ve htu değerlerini, iat zaman damgasını, token'ın ath hash'ini ve proof anahtarının cnf.jkt ile eşleşip eşleşmediğini kontrol eder, jti değerlerini izleyerek tekrar saldırılarını da yakalar. Özel anahtarı olmayan saldırgan bu aşamada takılır. Yazı, istemci, IdentityServer ve ASP.NET Core JwtBearer uzantıları için Duende kütüphanelerine yönlendiriyor.
Gerçek dünyada kullanımı
- Hassas veri sunan ve çalınmış token'lara karşı dayanıklı olması gereken bir ASP.NET Core API'si.
- IdentityServer'dan proof-of-possession token alıp korumalı bir API'yi çağıran bir .NET worker veya istemci uygulaması.
- Access token'ın log dosyalarına düşebileceği gateway veya reverse proxy kurulumları.
Neden önemli
Bearer token kullanan API'lerde sızan bir token tek başına saldırgana yetiyor; DPoP ile token, istemcinin özel anahtarı olmadan işe yaramaz hale geliyor.
Benzer haberler
- React, .NET 10 ve Microsoft Foundry ile güvenli bir kurumsal chatDEV Community: #dotnet1 gün önce
- ASP.NET Core'da authentication ve authorization: ne zaman hangisi, güvenle nasıl yayına alınırDEV Community: #aspnetcore1 gün önce
- MCP Sunucularında Ölçekte Rate Limiting ve Kaynak YönetişimiDEV Community: #aspnetcore1 gün önce