पोस्टिंग पहुँच के बिना लॉगिन
कुछ ऐप्स को सिर्फ़ यह जानना होता है कि Hive पर कोई व्यक्ति कौन है। वे उसकी ओर से कभी पोस्ट, वोट या कुछ प्रसारित नहीं करते। Hivesigner ऐसे ऐप में लोगों को बिना किसी पोस्टिंग अधिकार के लॉगिन करा सकता है। उपयोगकर्ता साबित करता है कि कोई Hive खाता उसी के नियंत्रण में है। आपका ऐप उसका नाम जान लेता है। यह पन्ना दोनों तरीके और नतीजे को सुरक्षित ढंग से जाँचने का तरीका बताता है।
दो तरीके
- ऐप खाते के साथ: आपके ऐप का अपना Hive खाता है और वह
scope=loginमाँगता है। टोकन में आपके ऐप का नाम होता है। - ऐप खाते के बिना: जिस साइट का अपना Hive खाता नहीं है वह सिर्फ़ एक
redirect_uriभेजती है। टोकन में किसी ऐप का नाम नहीं होता। आपकी साइट खुद उसे जाँचती है।
इनमें से किसी के लिए भी उपयोगकर्ता या आपके ऐप खाते की अनुमति नहीं चाहिए, इसलिए उपयोगकर्ता के खाते में कुछ नहीं बदलता। Hivesigner लॉगिन को पोस्टिंग कुंजी से साइन करता है, या सक्रिय कुंजी से जब डिवाइस पर उस खाते की पोस्टिंग कुंजी न हो।
ऐप खाते के साथ
-
अपना ऐप पंजीकृत करें: उसका Hive खाता बनाएँ और अपने कॉलबैक सूचीबद्ध करें। आपको क्लाइंट सीक्रेट और @hivesigner की अनुमति नहीं चाहिए।
-
उपयोगकर्ता को यहाँ भेजें:
https://hivesigner.com/oauth2/authorize?client_id=CLIENT_ID&redirect_uri=REDIRECT_URI&scope=login&state=STATE -
उपयोगकर्ता स्कोप «आपके खाते का उपयोगकर्ता नाम देखना» के साथ «APP में लॉगिन करें» देखता है। वह लॉगिन करें चुनता है।
-
Hivesigner आपके कॉलबैक पर भेज देता है:
REDIRECT_URI?state=STATE&access_token=TOKEN&expires_in=604800&username=USERNAME -
stateमिलाएँ, फिर टोकन जाँचें। यह एकloginटोकन है जिसमें आपके ऐप का नाम है, इसलिए इनमें से कोई भी तरीका चलेगा:- इसके साथ
GET /api/meबुलाएँ, जोuserमें खाता औरscopeमें["login"]लौटाता है, फिर टोकन डिकोड करकेtypeऔरappजाँचें (API से पूछें); - या
type: 'login'और अपने ऐप के नाम के साथ खुद जाँचें।
- इसके साथ
login टोकन कुछ प्रसारित नहीं कर सकता: /api/broadcast उससे भेजा हर ऑपरेशन अस्वीकार कर देता है।
ऐप खाते के बिना
-
उपयोगकर्ता को
redirect_uriके साथ औरclient_idके बिना अनुमति URL पर भेजें:https://hivesigner.com/oauth2/authorize?redirect_uri=REDIRECT_URI&state=STATEकॉलबैक
https://होना चाहिए, या लूपबैक परhttp://(localhost,127.0.0.1,[::1])। इसे पंजीकृत करने के लिए कोई सूची नहीं है। Hivesigner यहाँscopeऔरresponse_typeको अनदेखा करता है: उत्तर हमेशा एक लॉगिन टोकन होता है। -
उपयोगकर्ता «HOST आपके Hive उपयोगकर्ता नाम की पुष्टि करना चाहता है।» देखता है, जहाँ HOST आपके कॉलबैक का होस्ट है। वह लॉगिन करें चुनता है।
-
Hivesigner आपके कॉलबैक पर भेज देता है:
REDIRECT_URI?state=STATE&access_token=TOKEN&expires_in=604800&username=USERNAME -
stateमिलाएँ, फिर टोकन खुद जाँचें। API ऐसा टोकन नहीं लेता जिसमें किसी ऐप का नाम न हो, इसलिए आपका सर्वर हस्ताक्षर को खाते की कुंजियों के सामने जाँचता है। देखें खुद जाँचें,type: 'login'के साथ औरappके बिना।
जब कॉलबैक कोई वेब पता न हो, या लूपबैक के बाहर सादा http:// हो, तो Hivesigner अनुरोध अस्वीकार कर देता है और उपयोगकर्ता को कारण बताता है।
कौन-सा इस्तेमाल करें
| ऐप खाते के साथ | ऐप खाते के बिना | |
|---|---|---|
| उपयोगकर्ता क्या देखता है | आपके ऐप का नाम, चित्र और Hive खाता | सिर्फ़ आपकी साइट का होस्ट |
| तैयारी | कॉलबैक सूचीबद्ध किया हुआ एक Hive खाता | कुछ नहीं |
| टोकन में नाम होता है | आपके ऐप का | किसी ऐप का नहीं |
| टोकन जाँचें | /api/me या अपने कोड से |
अपने कोड से |
| आगे चलकर पोस्टिंग पहुँच | उसी खाते से: posting माँगें और @hivesigner को अनुमति दें |
पहले एक ऐप खाता चाहिए |
जब हो सके, ऐप खाता इस्तेमाल करें। उपयोगकर्ता आपके ऐप का नाम और चित्र देखते हैं। आपका सर्वर दूसरे ऐप के लिए बने टोकन अस्वीकार कर सकता है। आगे चलकर उसी खाते से पोस्टिंग पहुँच पर जा सकते हैं।
दूसरा तरीका तब इस्तेमाल करें जब आपकी साइट का Hive खाता न हो और वह चाहती भी न हो।
लॉगिन सुरक्षित ढंग से जाँचें
- अनुरोध को
stateसे बाँधें। हर लॉगिन के लिए एक यादृच्छिक मान बनाएँ, उसे उपयोगकर्ता के सत्र में रखें, कॉलबैक पर मिलाएँ और एक ही बार इस्तेमाल करें। देखें अनुरोध को state से बचाएँ। - प्रकार जाँचें। सिर्फ़
signed_message.typeबराबरloginस्वीकार करें। कोड या रिफ़्रेश टोकन लॉगिन नहीं है। - ऐप जाँचें। ऐप खाते के साथ
signed_message.appआपका ऐप होना चाहिए। उसके बिना कोईappनहीं होना चाहिए। - उम्र जाँचें। आप टोकन को रीडायरेक्ट के ठीक बाद जाँचते हैं, इसलिए उसे उसके
timestampके कुछ ही मिनटों के भीतर स्वीकार करें (जैसे 5 मिनट, एक मिनट के घड़ी अंतर के साथ)। - हर टोकन एक बार इस्तेमाल करें। सफल जाँच के बाद अपना सत्र शुरू करें (जैसे एक httpOnly कुकी) और Hivesigner का टोकन छोड़ दें। स्वीकार किए टोकनों का रिकॉर्ड तब तक रखें जब तक वे उम्र की जाँच पास करने लायक न रह जाएँ। जो टोकन दोबारा दिखे उसे अस्वीकार करें।
- टोकन को लॉग से बाहर रखें। वह आपके कॉलबैक की क्वेरी स्ट्रिंग में आता है। देखें टोकन सुरक्षित रखें।
उदाहरण
https://hivesearcher.com और https://openhive.chat जैसी साइटें लोगों को उनके Hive खाते से लॉगिन करने देती हैं, ऐसी सुविधाओं के लिए जो चेन से बाहर ही रहती हैं, जैसे खोज और चैट। उन्हें सिर्फ़ यह जानना होता है कि व्यक्ति कौन है, और कुछ नहीं।