ورود بدون دسترسی انتشار

برخی برنامه‌ها فقط باید بدانند یک شخص در 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 را مقایسه کنید و سپس توکن را خودتان بررسی کنید. 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 خود وارد شوند، برای امکاناتی که بیرون از زنجیره می‌مانند، مانند جست‌وجو و گفت‌وگو. آنها باید بدانند شخص کیست و نه بیشتر.