ورود بدون دسترسی انتشار
برخی برنامهها فقط باید بدانند یک شخص در 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به نشانی مجوز بفرستید: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آن بپذیرید (برای نمونه ۵ دقیقه، با یک دقیقه اختلاف ساعت). - هر توکن را یک بار به کار ببرید. پس از بررسی موفق، نشست خودتان را آغاز کنید (برای نمونه یک کوکی httpOnly) و توکن Hivesigner را دور بیندازید. سیاههای از توکنهای پذیرفتهشده نگه دارید تا زمانی که برای گذراندن بررسی زمان کهنه شوند. هر توکنی را که دوباره ببینید رد کنید.
- توکن را از گزارشها بیرون نگه دارید. توکن در رشته پرسوجوی نشانی بازگشت شما میرسد. ببینید توکنها را ایمن نگه دارید.
نمونهها
سایتهایی مانند https://hivesearcher.com و https://openhive.chat به افراد اجازه میدهند با حساب Hive خود وارد شوند، برای امکاناتی که بیرون از زنجیره میمانند، مانند جستوجو و گفتوگو. آنها باید بدانند شخص کیست و نه بیشتر.