Better Auth geçişini de dikkate alan Cloudflare Workers hash şablonu
(github.com/imjlk)Cloudflare Pages üzerinde Better Auth entegre etmeyi denerken CPU time limit hatası sürekli ortaya çıktı. Bu yüzden bunu Codex ile birlikte hazırladım.
Cloudflare, Worker'ların public URL olmadan Service Binding ve WorkerEntrypoint RPC ile doğrudan haberleşebilmesini sağlıyor; bu nedenle iç altyapı niteliğindeki işlevler için bu yaklaşımın daha doğal olacağını düşündüm. Bu yüzden Better Auth gibi kimlik doğrulama mantığında kullanılabilecek private bir password hasher Worker şablonu tasarladım.
Yapı basit. Auth'tan sorumlu caller Worker, hasher Worker'ı private service binding ile bağlıyor; gerçek hash alma ve doğrulama işlemleri ise yalnızca hashPassword() / verifyPassword() gibi RPC metotlarıyla çağrılıyor. Public HTTP tarafında yalnızca GET / metadata/health gibi en asgari uçlar bırakıldı ve parola hashleme işinin kendisini dış endpoint olarak açmamak temel varsayım olarak alındı. Yani bu, “hash API'sini açmak”tan ziyade “password hashing'i Cloudflare içindeki bir Worker bileşeni olarak ayırmak” fikrine daha yakın.
Uygulama, TypeScript Worker shell üzerine Rust/Wasm kernel koyacak şekilde kuruldu (tam Rust ile karşılaştırmak için kısa bir benchmark testi yapıldıktan sonra karar verildi) ve hash algoritması olarak Argon2id baz alındı. Bu şablonun odak noktası Argon2id'nin kendisini tanıtmak değil, Cloudflare Workers içinde password hashing'in hangi sınırlarla ayrılıp işletileceği. Uygulama Worker'ı kimlik doğrulama akışı ve oturum yönetimine odaklanırken, hash/doğrulama işlemlerini ayrı bir hasher Worker üstleniyor.
Better Auth ile birlikte kullanım akışı da dikkate alındı. Better Auth varsayılan olarak scrypt kullanıyor, ancak password hash/verify tarafı özelleştirilebildiği için caller Worker üzerinden hasher Worker çağrılacak şekilde bağlanabiliyor. Ayrıca mevcut hesaplar legacy scrypt formatı kullanıyor olsa bile, giriş anında doğrulandıktan sonra verifyAndMaybeRehash() ile yeni Argon2id hash'ine kademeli geçiş yapılması öngörüldü. Yani mevcut kullanıcıların parolalarını tek seferde topluca değiştirtmektense, gerçek giriş trafiğini takip ederek daha güçlü bir preset'e yavaş yavaş geçilen bir migration yolu düşünülerek hazırlandı.
Operasyon tarafında, Cloudflare Free ve Paid planlarının aynı ölçütle değerlendirilemeyeceği de hesaba katıldı. Free planında CPU sınırı düşük olduğundan Argon2id'nin varsayılan yapılandırmasını olduğu gibi kullanmak zor olabilir; bu nedenle standard-2026q1 dışında free-tier-fallback-2026q1 gibi bir preset de düşünülüyor. Ancak fallback preset, yalnızca platform kısıtlarını gözeten operasyonel bir taviz; güvenlik taban çizgisi olarak sunulması amaçlanan bir değer değil. Free ile başlanmış olsa bile, sonradan Paid'e geçerken daha güçlü Argon2id preset'leriyle yeniden hashleme yapılabilmesi için dokümantasyon ve örneklere gradual migration akışı da eklendi.
Özetle bu şablon, “Cloudflare Workers içinde parola hash'i nasıl hesaplanır?” sorusundan çok, “Cloudflare Workers içinde password hashing hangi sınırlarla ayrılıp işletilir?” sorusuna yakın duran bir repo. Better Auth'u Workers üzerinde çalıştırırken hash bölümünün yükünü ayırmak isteyenler, public bir hash endpoint'i açmak istemeyenler veya legacy scrypt hesaplarını kademeli olarak Argon2id'ye taşımak isteyenler için iyi bir başlangıç noktası olabilir.
repo: https://github.com/imjlk/cloudflare-auth-hasher-template
benchmark: https://github.com/imjlk/cloudflare-auth-hasher-template/tree/codex/benchmark-workspace
deploy: [Deploy to Cloudflare bağlantısı] (Cloudflare hesabınıza giriş yaptıktan sonra doğrudan dağıtımı deneyebilirsiniz.)
Henüz yorum yok.