Skip to content

पासवर्ड प्रबंधन

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 इन-मेमोरी प्रमाणीकरण इस्तेमाल करता है। एनोटेटरों का कॉन्फ़िग में होना ज़रूरी है:

yaml
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"

टिकाऊ क्रेडेंशियल

इन-मेमोरी क्रेडेंशियल पुनरारंभ पर मिट जाते हैं। टिकाऊ संग्रह के लिए फ़ाइल या डेटाबेस बैकएंड इस्तेमाल करें।

फ़ाइल आधारित संग्रह

yaml
authentication:
  method: in_memory
  user_config_path: /shared/path/to/user_config.jsonl

Potato hash किए गए क्रेडेंशियल इस फ़ाइल में लिखता है। पुनरारंभ पर उन्हें वापस पढ़ लेता है -- सत्र के दौरान सेट या बदले गए पासवर्ड पुनरारंभ के बाद भी बने रहते हैं।

डेटाबेस बैकएंड

SQLite (कोई अतिरिक्त निर्भरता नहीं):

yaml
authentication:
  method: database
  database_url: "sqlite:///auth/users.db"

PostgreSQL (psycopg2-binary चाहिए):

yaml
authentication:
  method: database
  database_url: "postgresql://user:password@localhost:5432/potato_auth"

डेटाबेस टेबल पहली बार शुरू होने पर अपने आप बन जाती हैं।

ध्यान दें: method: database और user_config_path एक साथ इस्तेमाल नहीं हो सकते -- दोनों में से एक ही संग्रह रणनीति चुनें।

पासवर्ड रीसेट करना

एडमिन CLI

कमांड लाइन से पासवर्ड रीसेट करें:

bash
# Reset a specific user's password
potato reset-password config.yaml --username annotator1
 
# Prompted for new password interactively

एडमिन API

API कुंजी के साथ प्रोग्राम से रीसेट करें:

bash
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 कोई ईमेल नहीं भेजता -- रीसेट लिंक एडमिन ख़ुद बाँटता है।

कॉन्फ़िग में चालू करें:

yaml
authentication:
  method: database
  database_url: "sqlite:///auth/users.db"
  allow_password_reset: true
  reset_token_ttl_hours: 24

एडमिन का तरीक़ा:

bash
# 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) वाले कामों के लिए आप पासवर्ड पूरी तरह बंद कर सकते हैं:

yaml
authentication:
  method: in_memory
  require_password: false

एनोटेटर कोई भी उपयोगकर्ता नाम डालकर लॉगिन कर लेते हैं -- पासवर्ड नहीं पूछा जाता। संवेदनशील डेटा या पहचान की पुष्टि माँगने वाले कामों के लिए यह ठीक नहीं है।

विवरण के लिए पासवर्ड-रहित लॉगिन देखें।

पूरा संदर्भ

yaml
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

आगे पढ़ें

कार्यान्वयन के विवरण के लिए स्रोत दस्तावेज़ देखें।