Вхід без доступу до публікації
Деяким застосункам потрібно лише знати, ким людина є в 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.typelogin. Код чи токен оновлення не є входом. - Перевірте застосунок. З обліковим записом застосунку
signed_message.appмає бути вашим застосунком. Без нього поляappне повинно бути взагалі. - Перевірте вік. Ви перевіряєте токен одразу після перенаправлення, тож приймайте його лише протягом кількох хвилин від його
timestamp(наприклад, 5 хвилин, з хвилиною на різницю годинників). - Використовуйте кожен токен один раз. Після успішної перевірки почніть власну сесію (наприклад, куку httpOnly) і відкиньте токен Hivesigner. Зберігайте перелік прийнятих токенів, доки вони не стануть надто старими для перевірки за віком. Відхиляйте будь-який, який побачите вдруге.
- Тримайте токен поза журналами. Він надходить у рядку запиту вашої адреси зворотного виклику. Див. Тримайте токени в безпеці.
Приклади
Сайти на кшталт https://hivesearcher.com і https://openhive.chat дають людям змогу входити зі своїм обліковим записом Hive заради функцій, які лишаються поза блокчейном, як-от пошук і чат. Їм потрібно знати, хто ця людина, і нічого більше.