تسجيل الدخول دون وصول النشر

بعض التطبيقات تحتاج فقط إلى معرفة هوية الشخص على Hive. فهي لا تنشر ولا تصوّت ولا تبثّ شيئًا نيابةً عنه. ويستطيع Hivesigner تسجيل دخول الأشخاص إلى تطبيق كهذا دون أي صلاحية نشر. يثبت المستخدم أنه يتحكم بحساب على Hive. ويعرف تطبيقك اسمه. تعرض هذه الصفحة الطريقتين وكيفية التحقق من النتيجة بأمان.

طريقتان

  • بحساب تطبيق: لتطبيقك حساب Hive خاص به ويطلب scope=login. ويسمّي الرمز تطبيقك.
  • بلا حساب تطبيق: موقع بلا حساب Hive خاص به يرسل redirect_uri فقط. ولا يسمّي الرمز أي تطبيق. ويتحقق موقعك منه بنفسه.

لا تحتاج أي منهما إلى تفويض من المستخدم ولا من حساب تطبيقك، فلا يتغير شيء في حساب المستخدم. ويوقّع Hivesigner تسجيل الدخول بمفتاح النشر، أو بالمفتاح النشط عندما لا يحمل الجهاز مفتاح نشر للحساب.

بحساب تطبيق

  1. سجّل تطبيقك: أنشئ حساب Hive له وأدرج عناوين الاستدعاء الخاصة بك. ولا تحتاج مفتاحًا سريًا للعميل ولا تفويض @hivesigner.

  2. أرسل المستخدم إلى:

    https://hivesigner.com/oauth2/authorize?client_id=CLIENT_ID&redirect_uri=REDIRECT_URI&scope=login&state=STATE
    
  3. يرى المستخدم "تسجيل الدخول إلى APP" مع النطاق "عرض اسم المستخدم لحسابك". فيختار تسجيل الدخول.

  4. يعيد Hivesigner التوجيه إلى عنوان الاستدعاء الخاص بك:

    REDIRECT_URI?state=STATE&access_token=TOKEN&expires_in=604800&username=USERNAME
    
  5. قارن state، ثم تحقّق من الرمز. فهو رمز login يسمّي تطبيقك، ولذلك تصلح أي من هاتين الطريقتين:

لا يستطيع رمز login البثّ: فـ /api/broadcast يرفض كل عملية تُرسل به.

بلا حساب تطبيق

  1. أرسل المستخدم إلى عنوان التخويل مع redirect_uri وبلا client_id:

    https://hivesigner.com/oauth2/authorize?redirect_uri=REDIRECT_URI&state=STATE
    

    يجب أن يكون عنوان الاستدعاء https://، أو http:// على العنوان المحلي (localhost أو 127.0.0.1 أو [::1]). ولا توجد قائمة تسجّله فيها. ويتجاهل Hivesigner هنا scope وresponse_type: فالإجابة دائمًا رمز تسجيل دخول.

  2. يرى المستخدم "يريد HOST التأكّد من اسم المستخدم الخاص بك على Hive."، حيث HOST هو مضيف عنوان الاستدعاء الخاص بك. فيختار تسجيل الدخول.

  3. يعيد Hivesigner التوجيه إلى عنوان الاستدعاء الخاص بك:

    REDIRECT_URI?state=STATE&access_token=TOKEN&expires_in=604800&username=USERNAME
    
  4. قارن state، ثم تحقّق من الرمز بنفسك. فالواجهة لا تقبل رمزًا لا يسمّي أي تطبيق، ولذلك يتحقق خادمك من التوقيع مقابل مفاتيح الحساب. راجع تحقّق بنفسك، بـ type: 'login' وبلا app.

وعندما لا يكون عنوان الاستدعاء عنوان ويب، أو يكون http:// عاديًا خارج العنوان المحلي، يرفض Hivesigner الطلب ويخبر المستخدم بالسبب.

أيّهما تستخدم

بحساب تطبيق بلا حساب تطبيق
ما يراه المستخدم اسم تطبيقك وصورته وحسابه على Hive مضيف موقعك فقط
الإعداد حساب Hive مع إدراج عناوين الاستدعاء لا شيء
الرمز يسمّي تطبيقك لا تطبيق
تحقّق من الرمز بـ /api/me أو شيفرتك أنت شيفرتك أنت
وصول النشر لاحقًا بالحساب نفسه: اطلب posting وامنح @hivesigner يحتاج حساب تطبيق أولًا

استخدم حساب تطبيق متى استطعت. فالمستخدمون يرون اسم تطبيقك وصورته. ويستطيع خادمك رفض الرموز المُنشأة لتطبيق آخر. ويمكنك الانتقال إلى وصول النشر لاحقًا بالحساب نفسه.

استخدم الطريقة الثانية عندما لا يملك موقعك حساب Hive ولا يريد واحدًا.

تحقّق من تسجيل الدخول بأمان

  • اربط الطلب بـ state. ولّد قيمة عشوائية لكل تسجيل دخول، وخزّنها في جلسة المستخدم، وقارنها على عنوان الاستدعاء، واستخدمها مرة واحدة. راجع احمِ الطلب بـ state.
  • تحقّق من النوع. لا تقبل إلا signed_message.type يساوي login. فالكود أو رمز التجديد ليس تسجيل دخول.
  • تحقّق من التطبيق. مع حساب التطبيق، يجب أن يكون signed_message.app هو تطبيقك. وبدونه يجب ألا يوجد app أصلًا.
  • تحقّق من العمر. أنت تتحقق من الرمز مباشرةً بعد إعادة التوجيه، فلا تقبله إلا خلال دقائق قليلة من timestamp الخاص به (خمس دقائق مثلًا، مع دقيقة لفارق الساعة).
  • استخدم كل رمز مرة واحدة. بعد تحقق ناجح، ابدأ جلستك أنت (ملف تعريف ارتباط httpOnly مثلًا) وتخلّص من رمز Hivesigner. واحتفظ بسجل للرموز التي قبلتها إلى أن تصير أقدم من أن تجتاز فحص العمر. وارفض أي رمز تراه مرة أخرى.
  • أبقِ الرمز خارج السجلات. فهو يصل في سلسلة استعلام عنوان الاستدعاء الخاص بك. راجع حافظ على أمان الرموز.

أمثلة

مواقع مثل https://hivesearcher.com و https://openhive.chat تتيح للأشخاص تسجيل الدخول بحساب Hive الخاص بهم لميزات تبقى خارج السلسلة، مثل البحث والدردشة. فهي تحتاج إلى معرفة هوية الشخص ولا شيء غير ذلك.