
🔐 प्रमाणीकरण को सही तरीके से बनाकर सीखें। Cloudflare Workers के लिए Hono, Turso, PBKDF2, और JWT dual-token सत्रों के साथ एक विस्तार योग्य, मानक-अनुरूप संदर्भ कार्यान्वयन।
प्रमाणीकरण को सही तरीके से बनाकर सीखें।
डेमो नोट: लॉगिन एंडपॉइंट एडेप्टिव PoW चुनौतियों द्वारा सुरक्षित है — बार-बार विफल होने पर प्रूफ-ऑफ-वर्क कठिनाई बढ़ती जाती है। कैश-समर्थित दर सीमक लागू और परीक्षण किया गया है, लेकिन वर्तमान में लाइव डेमो में सक्षम नहीं है; इसे सक्रिय करने के लिए
app.tsमेंcreateCacheClientको चालू करें।
Cloudflare Workers के लिए एक शुरुआत से प्रमाणीकरण संदर्भ कार्यान्वयन — PBKDF2 पासवर्ड हैशिंग, JWT दोहरे टोकन सत्र, स्थिर-समय तुलना, स्लाइडिंग समाप्ति, और एक हटाने योग्य ऑब्ज़र्वेबिलिटी प्लगइन — सभी Hono, Turso (वैकल्पिक Valkey/Redis कैशिंग के साथ), और सख्त TypeScript के साथ जुड़े हुए हैं।
प्रत्येक डिज़ाइन विकल्प एक मानक की ओर जाता है: क्रेडेंशियल्स के लिए NIST SP 800-63B, कुंजी व्युत्पत्ति के लिए NIST SP 800-132, सत्यापन के लिए OWASP ASVS, और JWT सर्वोत्तम प्रथाओं के लिए RFC 8725।
कोई उत्पाद शिप कर रहे हैं? इसके बजाय Better Auth का उपयोग करें — यह OAuth, पासकी, MFA, दर सीमक, और बहुत कुछ बॉक्स से बाहर एक सक्रिय प्लगइन पारिस्थितिकी तंत्र के साथ कवर करता है। यह रिपोजिटरी आपको कैसे प्रमाणीकरण काम करता है, यह सिखाने के लिए मौजूद है, न कि किसी उत्पादन लाइब्रेरी को बदलने के लिए।
यह परियोजना जानबूझकर उन सुविधाओं को छोड़ती है जो इसके शैक्षिक दायरे से बाहर हैं। यदि आप इस कोड को उत्पादन की ओर बढ़ा रहे हैं (या यह मूल्यांकन कर रहे हैं कि उत्पादन प्रमाणीकरण प्रणाली के लिए क्या आवश्यक है), तो नीचे दी गई तालिकाएँ प्राथमिकता स्तर के अनुसार अंतराल को व्यवस्थित करती हैं।
अधिकांश वास्तविक दुनिया की परियोजनाओं के लिए, इन्हें स्वयं बनाने के बजाय Better Auth का उपयोग करें।
| सुविधा | यह क्यों मायने रखता है | मानक / संदर्भ |
|---|---|---|
| लीक हुए पासवर्ड की जाँच | सार्वजनिक डेटा डंप में ज्ञात पासवर्ड के उपयोग को रोकता है | NIST SP 800-63B §5.1.1.2, HIBP API |
ये सभी Better Auth तक पहुँचने के उत्कृष्ट कारण हैं।
.
├── apps/
│ └── cloudflare-workers/ # उदाहरण Worker + Hono रूट्स
├── packages/
│ ├── core/ # प्रमाणीकरण सेवाएँ, मिडलवेयर, क्रिप्टो उपयोगिताएँ
│ ├── infrastructure/ # डीबी क्लाइंट + उपयोगिताएँ
│ ├── observability/ # इवेंट उत्सर्जन, एडेप्टिव चुनौतियाँ, ops API (हटाने योग्य प्लगइन)
│ ├── schemas/ # Zod स्कीमा
│ └── types/ # साझा TypeScript प्रकार
├── tools/
│ └── cli/ # plctl — /ops सतह के लिए Go TUI
└── docs/
├── adr/ # आर्किटेक्चर निर्णय रिकॉर्ड
└── audits/ # सुरक्षा ऑडिट
git clone https://github.com/vhscom/private-landing.git
cd private-landing
bun install
bun run dev
बस इतना ही — कोई खाता, कोई API कुंजी, कोई .env फ़ाइल नहीं। डेव सर्वर स्थानीय SQLite डेटाबेस और उत्पन्न रहस्यों के साथ शुरू होता है। खाता पंजीकृत करने और प्रमाणीकरण प्रवाहों का पता लगाने के लिए http://localhost:8788 खोलें।
क्या आपके पास Turso खाता है?
apps/cloudflare-workers/में एक.dev.varsफ़ाइल डालें (देखें.dev.vars.example) औरbun run devस्वचालित रूप से आपके दूरस्थ डेटाबेस के साथ wrangler का उपयोग करेगा। स्थानीय सर्वर को बाध्य करने के लिएbun run dev:localका उपयोग करें।
परीक्षण और तैनाती के निर्देशों के लिए CONTRIBUTING.md देखें।
इस रिपॉजिटरी में एक CLAUDE.md फ़ाइल शामिल है जो AI सहायकों के लिए संदर्भ प्रदान करती है। Claude Code, Cursor, या समान AI-संचालित विकास उपकरणों का उपयोग करते समय:
CLAUDE.md पढ़ेगाdocs/adr/ में आर्किटेक्चर निर्णय रिकॉर्ड डिज़ाइन विकल्पों की व्याख्या करते हैंdocs/audits/ में सुरक्षा ऑडिट सुरक्षा स्थिति का दस्तावेजीकरण करते हैंकोडबेस को स्पष्ट मॉड्यूल सीमाओं, व्यापक प्रकारों और वर्णनात्मक नामकरण के साथ AI-पढ़ने योग्य बनाया गया है।
| परत | यह क्या करता है |
|---|
| पासवर्ड संग्रहण | 128-बिट सॉल्ट, अखंडता डाइजेस्ट, संस्करण ट्रैकिंग के साथ PBKDF2-SHA384 (password-service.ts) |
| सत्र प्रबंधन | डिवाइस ट्रैकिंग, स्लाइडिंग समाप्ति, प्रति उपयोगकर्ता अधिकतम-3 सत्र के साथ सर्वर-साइड सत्र; Valkey/Redis के माध्यम से वैकल्पिक कैश-समर्थित सत्र (session-service.ts, cached-session-service.ts) |
| पासवर्ड बदलना | वर्तमान-पासवर्ड पुनः सत्यापन, पूर्ण PBKDF2 पुनः हैश, सभी सत्रों का परमाणु रद्दीकरण (account-service.ts, ADR-004) |
| JWT दोहरे टोकन पैटर्न | 15 मिनट का एक्सेस + 7 दिन का रिफ्रेश टोकन, रद्दीकरण के लिए सत्र-लिंक्ड (token-service.ts) |
| प्रमाणीकरण मिडलवेयर | स्वचालित रिफ्रेश प्रवाह, स्पष्ट HS256 पिनिंग, typ दावा सत्यापन (require-auth.ts) |
| सुरक्षित कुकीज़ | HttpOnly, Secure, SameSite=Strict, Path=/ (cookie.ts) |
| सुरक्षा हेडर | HSTS, CSP, CORP/COEP/COOP, Permissions-Policy, फिंगरप्रिंट हटाना (security.ts) |
| इनपुट सत्यापन | NIST-अनुरूप पासवर्ड नीति (केवल लंबाई, कोई जटिलता नियम नहीं) के साथ Zod स्कीमा |
| दर सीमित करना | ब्रूट-फोर्स और क्रेडेंशियल-स्टफिंग हमलों के खिलाफ फिक्स्ड-विंडो थ्रॉटलिंग: सार्वजनिक प्रमाणीकरण मार्गों पर IP-कुंजी (जैसे लॉगिन), संरक्षित क्रियाओं पर उपयोगकर्ता-कुंजी; कोई हार्ड लॉकआउट नहीं (NIST-संरेखित) (ADR-006) |
| ऑब्ज़र्वेबिलिटी प्लगइन | संरचित सुरक्षा घटनाएँ, एडेप्टिव PoW चुनौतियाँ, एजेंट-प्रमाणित /ops API — मिडलवेयर के माध्यम से प्लग करता है, एक पैकेज हटाकर हटाने योग्य (ADR-008) |
| CLI उपकरण | इवेंट क्वेरी करने, सत्र प्रबंधित करने और /ops सतह के माध्यम से एजेंट क्रेडेंशियल प्रदान करने के लिए Go TUI (plctl) (tools/cli/) |
| आक्रमण-वेक्टर परीक्षण | JWT छेड़छाड़, एल्गोरिदम भ्रम, प्रकार भ्रम, यूनिकोड किनारे के मामले, सूचना-प्रकटीकरण जाँच |
| सुविधा | यह क्यों मायने रखता है | मानक / संदर्भ |
|---|
| CSRF सुरक्षा (यदि SameSite को आराम दिया गया है) | वर्तमान में SameSite=Strict CSRF को रोकता है; यदि UX के लिए Lax में बदला जाता है, तो एक स्पष्ट टोकन की आवश्यकता है | OWASP CSRF Cheat Sheet |
| रिफ्रेश टोकन रोटेशन | टोकन चोरी का पता लगाता है — यदि घुमाया गया रिफ्रेश टोकन पुनः उपयोग किया जाता है, तो पूरे सत्र परिवार को रद्द करें | RFC 6819 §5.2.2.3 |
JWT में aud दावा | एक सेवा के टोकन को उसी रहस्य को साझा करने वाली दूसरी सेवा द्वारा स्वीकार किए जाने से रोकता है | RFC 7519 §4.1.3, RFC 8725 §3.9 |
| इनलाइन स्क्रिप्ट के लिए CSP नॉन्स | वर्तमान CSP 'unsafe-inline' का उपयोग करता है; नॉन्स इनलाइन-स्क्रिप्ट XSS वैक्टर को समाप्त करते हैं | MDN CSP script-src |
| सुविधा | यह क्यों मायने रखता है | मानक / संदर्भ |
|---|
| TOTP मल्टी-फ़ैक्टर प्रमाणीकरण | उच्च-मूल्य खातों के लिए दूसरा कारक जोड़ता है | RFC 6238, NIST SP 800-63B §5.1.4 |
| WebAuthn / पासकी | प्लेटफॉर्म प्रमाणित करने वालों का उपयोग करके फ़िशिंग-प्रतिरोधी प्रमाणीकरण | WebAuthn Level 2 |
| OAuth / सोशल लॉगिन | घर्षण कम करता है, पासवर्ड थकान से बचाता है | RFC 6749 |
| मैजिक लिंक / OTP | कम जोखिम वाले प्रवाहों के लिए पासवर्ड रहित विकल्प | NIST SP 800-63B §5.1.3 |
| सत्र विश्लेषण | डिवाइस ट्रैकिंग, समवर्ती-सत्र दृश्यता, विसंगति का पता लगाना | OWASP Session Management Cheat Sheet |
| कुंजी हस्ताक्षर रोटेशन | सभी सत्रों को अमान्य किए बिना आवधिक रहस्य रोटेशन की अनुमति देता है | RFC 7517 (JWK) |
| सुविधा | यह क्यों मायने रखता है | मानक / संदर्भ |
|---|
| DPoP / टोकन बाइंडिंग | टोकन को क्लाइंट के TLS कनेक्शन से बांधता है, जिससे एक्सफ़िल्ट्रेशन रीप्ले को रोका जा सके | RFC 9449 (DPoP) |
| मल्टी-टेनेंसी | उपयोगकर्ता पूल, रहस्य और नीतियों को प्रति टेनेंट अलग करता है | एप्लिकेशन-विशिष्ट |
| जियो-फ़ेंसिंग / IP प्रतिष्ठा | अप्रत्याशित क्षेत्रों या ज्ञात-खराब IP से लॉगिन को अवरुद्ध करता है | OWASP ASVS v5.0 §6.3.5 |
| एडेप्टिव प्रमाणीकरण | जोखिम संकेतों (डिवाइस, स्थान, व्यवहार) के आधार पर प्रमाणीकरण आवश्यकताओं को बढ़ाता है | NIST SP 800-63B §6 |
| PBKDF2 पुनरावृत्ति उन्नयन या Argon2id | OWASP 210,000 PBKDF2-SHA512 पुनरावृत्तियों की सिफारिश करता है (Cloudflare 100k तक सीमित करता है); Argon2id मेमोरी-हार्ड है | OWASP Password Storage Cheat Sheet |