Better Auth माइग्रेशन को ध्यान में रखकर बनाया गया Cloudflare Workers hash टेम्पलेट
(github.com/imjlk)Cloudflare Pages में Better Auth जोड़कर देखते समय CPU time limit error लगातार आ रहा था। इसलिए इसे Codex के साथ मिलकर बनाया।
Cloudflare में Worker आपस में public URL के बिना Service Binding और WorkerEntrypoint RPC के जरिए सीधे communicate कर सकते हैं, इसलिए internal infrastructure जैसी प्रकृति वाले functions के लिए यह तरीका अधिक स्वाभाविक लगा। इसी वजह से मैंने Better Auth जैसी authentication logic में उपयोग किए जा सकने वाले private password hasher Worker template की कल्पना की।
संरचना सरल है। auth को संभालने वाला caller Worker, private service binding के जरिए hasher Worker को जोड़ता है, और वास्तविक hash व verification केवल hashPassword() / verifyPassword() जैसे RPC methods से call किए जाते हैं। public HTTP में GET / metadata/health जैसी न्यूनतम चीज़ें ही रखी गई हैं, और password hashing को external endpoint के रूप में expose न करना इसका मूल आधार है। यानी, यह “hash API को public करना” कम और “password hashing को Cloudflare के internal Worker component के रूप में अलग करना” ज़्यादा है।
implementation में TypeScript Worker shell के ऊपर Rust/Wasm kernel रखा गया है (full Rust आदि से तुलना के लिए एक सरल benchmark test के बाद निर्णय लिया गया), और hash algorithm के लिए Argon2id को आधार बनाया गया है। इस template का मुख्य बिंदु Argon2id का परिचय देना नहीं है, बल्कि Cloudflare Workers के भीतर password hashing को किस boundary पर अलग करके operate किया जाए, यह है। app Worker authentication flow और session management पर focus करता है, जबकि hash/verification अलग hasher Worker संभालता है।
Better Auth के साथ इस्तेमाल होने वाले flow को भी ध्यान में रखा गया है। Better Auth default रूप से scrypt का उपयोग करता है, लेकिन password hash/verify को customize किया जा सकता है, इसलिए caller Worker से hasher Worker को call करने के रूप में इसे जोड़ा जा सकता है। और यदि मौजूदा account legacy scrypt format का उपयोग करते हों, तो login के समय verification के बाद verifyAndMaybeRehash() के जरिए उन्हें नए Argon2id hash में धीरे-धीरे upgrade करने वाला flow भी मानकर चला गया है। यानी, मौजूदा users के password एक बार में सब बदलवाने के बजाय, वास्तविक login traffic के साथ धीरे-धीरे stronger preset की ओर ले जाने वाला migration path ध्यान में रखकर इसे बनाया गया है।
operations के दृष्टिकोण से यह भी शामिल किया गया है कि Cloudflare Free और Paid को एक ही मानक से देखना कठिन है। Free में CPU limit कम होने के कारण Argon2id की default configuration को वैसे ही उपयोग करना मुश्किल हो सकता है, इसलिए standard-2026q1 के अलावा free-tier-fallback-2026q1 जैसे preset रखने की संरचना सोची गई है। हालांकि fallback preset केवल platform constraints को ध्यान में रखकर किया गया operational compromise है, इसे security baseline की तरह प्रस्तुत करने का इरादा नहीं है। Free से शुरुआत करने पर भी, बाद में Paid पर जाते समय stronger Argon2id preset के साथ rehash किया जा सके, इसके लिए docs और examples में gradual migration flow भी शामिल किया गया है।
संक्षेप में, यह template “Cloudflare Workers में password hash कैसे calculate करें” से ज़्यादा “Cloudflare Workers में password hashing को किस boundary पर अलग करके operate करें” के बारे में है। यदि आप Workers पर Better Auth चलाते हुए hashing section का load अलग करना चाहते हैं, public hash endpoint खोलना नहीं चाहते, या legacy scrypt accounts को धीरे-धीरे Argon2id में migrate करना चाहते हैं, तो यह एक अच्छा starting point हो सकता है।
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 link] (Cloudflare account में login करने के बाद आप इसे तुरंत deploy करके देख सकते हैं।)
अभी कोई टिप्पणी नहीं है.