Вход без доступа к публикации
Некоторым приложениям нужно лишь знать, кто этот человек в 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(например, 5 минут, с минутой на расхождение часов). - Каждый токен используйте один раз. После удачной проверки начните собственную сессию (например, cookie httpOnly) и выбросьте токен Hivesigner. Ведите учёт принятых токенов, пока они не станут слишком старыми для проверки возраста. Отклоняйте любой, который увидите снова.
- Держите токен вне журналов. Он приходит в строке запроса вашего адреса возврата. Смотрите Храните токены безопасно.
Примеры
Сайты вроде https://hivesearcher.com и https://openhive.chat позволяют людям входить со своим аккаунтом Hive ради возможностей, которые остаются вне блокчейна, например поиска и чата. Им нужно знать только, кто этот человек, и ничего больше.