पासवर्ड प्रबंधन
Potato में PBKDF2-SHA256 पासवर्ड hashing, एडमिन CLI/API रीसेट, टोकन आधारित स्व-सेवा रीसेट प्रवाह, और SQLite या PostgreSQL में क्रेडेंशियल संग्रह कॉन्फ़िगर करें।
v2.4.0 में नया
Potato का प्रमाणीकरण सिस्टम PBKDF2-SHA256, 100,000 पुनरावृत्तियों और प्रति-उपयोगकर्ता salt के साथ इस्तेमाल करता है -- वही तरीक़ा जिसकी सिफ़ारिश NIST सुरक्षित पासवर्ड संग्रह के लिए करता है। यह पृष्ठ बताता है कि पासवर्ड कैसे रखे जाते हैं, उन्हें कैसे रीसेट करें, और सर्वर पुनरारंभ होने पर क्रेडेंशियल कैसे बनाए रखें।
सुरक्षा कार्यान्वयन
पासवर्ड salt$hash फ़ॉर्मैट में रखे जाते हैं:
- 32 अक्षर का hex salt, हर उपयोगकर्ता के लिए अलग
salt + passwordका 64 अक्षर वाला SHA-256 hash- टाइमिंग हमलों से बचने के लिए
hmac.compare_digestसे नियत-समय तुलना
user_config.jsonl फ़ाइलों में पड़े मौजूदा सादे पासवर्ड लोड होते समय Potato अपने आप अलग-अलग salt के साथ फिर से hash कर देता है -- कोई मैन्युअल माइग्रेशन नहीं करना पड़ता।
डिफ़ॉल्ट कॉन्फ़िगरेशन
डिफ़ॉल्ट रूप से Potato इन-मेमोरी प्रमाणीकरण इस्तेमाल करता है। एनोटेटरों का कॉन्फ़िग में होना ज़रूरी है:
authentication:
method: in_memory
require_password: true
user_config:
users:
- username: "annotator1"
password: "initial-password" # will be hashed on first load
- username: "annotator2"
password: "initial-password"टिकाऊ क्रेडेंशियल
इन-मेमोरी क्रेडेंशियल पुनरारंभ पर मिट जाते हैं। टिकाऊ संग्रह के लिए फ़ाइल या डेटाबेस बैकएंड इस्तेमाल करें।
फ़ाइल आधारित संग्रह
authentication:
method: in_memory
user_config_path: /shared/path/to/user_config.jsonlPotato hash किए गए क्रेडेंशियल इस फ़ाइल में लिखता है। पुनरारंभ पर उन्हें वापस पढ़ लेता है -- सत्र के दौरान सेट या बदले गए पासवर्ड पुनरारंभ के बाद भी बने रहते हैं।
डेटाबेस बैकएंड
SQLite (कोई अतिरिक्त निर्भरता नहीं):
authentication:
method: database
database_url: "sqlite:///auth/users.db"PostgreSQL (psycopg2-binary चाहिए):
authentication:
method: database
database_url: "postgresql://user:password@localhost:5432/potato_auth"डेटाबेस टेबल पहली बार शुरू होने पर अपने आप बन जाती हैं।
ध्यान दें: method: database और user_config_path एक साथ इस्तेमाल नहीं हो सकते -- दोनों में से एक ही संग्रह रणनीति चुनें।
पासवर्ड रीसेट करना
एडमिन CLI
कमांड लाइन से पासवर्ड रीसेट करें:
# Reset a specific user's password
potato reset-password config.yaml --username annotator1
# Prompted for new password interactivelyएडमिन API
API कुंजी के साथ प्रोग्राम से रीसेट करें:
curl -X POST http://localhost:8000/admin/reset_password \
-H "X-API-Key: $ADMIN_API_KEY" \
-H "Content-Type: application/json" \
-d '{"username": "annotator1", "new_password": "new-secure-password"}'स्व-सेवा टोकन रीसेट
Potato में उपयोगकर्ता ख़ुद भी रीसेट शुरू कर सकता है। उपयोगकर्ता /forgot-password पर जाकर अपना उपयोगकर्ता नाम डालते हैं और उन्हें एक बार इस्तेमाल होने वाला रीसेट टोकन मिलता है। नया पासवर्ड सेट करने के लिए वे /reset/<token> पर जाते हैं।
टोकन 24 घंटे तक वैध रहते हैं और सिर्फ़ एक बार इस्तेमाल हो सकते हैं। Potato कोई ईमेल नहीं भेजता -- रीसेट लिंक एडमिन ख़ुद बाँटता है।
कॉन्फ़िग में चालू करें:
authentication:
method: database
database_url: "sqlite:///auth/users.db"
allow_password_reset: true
reset_token_ttl_hours: 24एडमिन का तरीक़ा:
# Generate a reset token for a user
curl -X POST http://localhost:8000/admin/generate_reset_token \
-H "X-API-Key: $ADMIN_API_KEY" \
-d '{"username": "annotator1"}'
# Returns: {"reset_url": "https://your-server.com/reset/abc123..."}
# Share this URL with the annotatorपासवर्ड-रहित मोड
कक्षा में दिखाने, जल्दी निपटने वाले अध्ययनों, या बाहरी प्रमाणीकरण (MTurk, Prolific) वाले कामों के लिए आप पासवर्ड पूरी तरह बंद कर सकते हैं:
authentication:
method: in_memory
require_password: falseएनोटेटर कोई भी उपयोगकर्ता नाम डालकर लॉगिन कर लेते हैं -- पासवर्ड नहीं पूछा जाता। संवेदनशील डेटा या पहचान की पुष्टि माँगने वाले कामों के लिए यह ठीक नहीं है।
विवरण के लिए पासवर्ड-रहित लॉगिन देखें।
पूरा संदर्भ
authentication:
method: in_memory # in_memory | database | oauth | clerk
# In-memory options
require_password: true
user_config_path: path/to/users.jsonl # optional persistence
# Database options (mutually exclusive with user_config_path)
database_url: "sqlite:///auth/users.db"
# Self-service reset
allow_password_reset: true
reset_token_ttl_hours: 24
user_config:
users:
- username: "researcher"
password: "secure-passphrase"
role: admin
- username: "annotator1"
password: "initial-pass"
role: annotatorआगे पढ़ें
- SSO और OAuth प्रमाणीकरण -- Google, GitHub या संस्थागत SSO से साइन इन
- पासवर्ड-रहित लॉगिन -- खुले कामों के लिए सिर्फ़ उपयोगकर्ता नाम से पहुँच
- प्रोडक्शन सेटअप -- HTTPS और रिवर्स प्रॉक्सी कॉन्फ़िगरेशन
- एडमिन डैशबोर्ड -- एनोटेटर खातों का प्रबंधन
कार्यान्वयन के विवरण के लिए स्रोत दस्तावेज़ देखें।