Вход без posting достъп
Някои приложения трябва само да знаят кой е даден човек в Hive. Те никога не публикуват, не гласуват и не излъчват нищо от негово име. Hivesigner може да впише хората в такова приложение без никакви posting правомощия. Потребителят доказва, че контролира Hive акаунт. Вашето приложение научава името му. Тази страница показва двата начина и как да проверите резултата безопасно.
Два начина
- С акаунт за приложение: вашето приложение има собствен Hive акаунт и иска
scope=login. Токенът назовава вашето приложение. - Без акаунт за приложение: сайт без собствен Hive акаунт изпраща само
redirect_uri. Токенът не назовава приложение. Вашият сайт го проверява сам.
Нито единият начин не изисква разрешение от потребителя или от акаунта на вашето приложение, така че нищо в акаунта на потребителя не се променя. Hivesigner подписва входа с posting ключа или с active ключа, когато устройството няма posting ключ за акаунта.
С акаунт за приложение
-
Регистрирайте приложението си: създайте неговия 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 достъп по-късно | Със същия акаунт: поискайте posting и дайте разрешение на @hivesigner |
Първо е нужен акаунт за приложение |
Използвайте акаунт за приложение, когато можете. Потребителите виждат името и снимката на вашето приложение. Вашият сървър може да отхвърля токени, създадени за друго приложение. По-късно можете да преминете към posting достъп със същия акаунт.
Използвайте втория начин, когато сайтът ви няма Hive акаунт и не иска да има.
Проверете входа безопасно
- Свържете заявката със
state. Генерирайте случайна стойност за всеки вход, съхранете я в сесията на потребителя, сравнете я на адреса за обратно извикване и я използвайте веднъж. Вижте Защитете заявката със state. - Проверете типа. Приемайте само
signed_message.typelogin. Код или токен за обновяване не е вход. - Проверете приложението. С акаунт за приложение
signed_message.appтрябва да е вашето приложение. Без такъв акаунт не трябва да имаapp. - Проверете възрастта. Проверявате токена веднага след пренасочването, затова го приемайте само в рамките на няколко минути от неговия
timestamp(например 5 минути, с една минута разлика в часовниците). - Използвайте всеки токен веднъж. След успешна проверка започнете собствена сесия (например httpOnly бисквитка) и изхвърлете токена на Hivesigner. Пазете запис на приетите токени, докато станат твърде стари, за да минат проверката за възраст. Отказвайте всеки, който видите отново.
- Дръжте токена извън дневниците. Той пристига в query низа на вашия адрес за обратно извикване. Вижте Пазете токените.
Примери
Сайтове като https://hivesearcher.com и https://openhive.chat позволяват на хората да влизат с Hive акаунта си за функции, които остават извън блокчейна, например търсене и чат. Те трябва да знаят кой е човекът и нищо повече.