পোস্টিং অ্যাক্সেস ছাড়া লগইন

কিছু অ্যাপের শুধু জানা দরকার 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 ছাড়া অনুমোদন URL-এ পাঠান:

    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 মিলিয়ে দেখুন, তারপর টোকেনটি নিজে যাচাই করুন। API এমন টোকেন নেয় না যাতে কোনো অ্যাপের নাম নেই, তাই আপনার সার্ভার অ্যাকাউন্টের কী-এর বিপরীতে স্বাক্ষর যাচাই করে। দেখুন নিজে যাচাই করুন, 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 অ্যাকাউন্ট দিয়ে লগইন করতে দেয়, এমন ফিচারের জন্য যা চেইনের বাইরেই থাকে, যেমন অনুসন্ধান আর চ্যাট। তাদের শুধু জানা দরকার ব্যক্তিটি কে, আর কিছুই নয়।