Вход без posting достъп

Някои приложения трябва само да знаят кой е даден човек в Hive. Те никога не публикуват, не гласуват и не излъчват нищо от негово име. Hivesigner може да впише хората в такова приложение без никакви posting правомощия. Потребителят доказва, че контролира Hive акаунт. Вашето приложение научава името му. Тази страница показва двата начина и как да проверите резултата безопасно.

Два начина

  • С акаунт за приложение: вашето приложение има собствен Hive акаунт и иска scope=login. Токенът назовава вашето приложение.
  • Без акаунт за приложение: сайт без собствен Hive акаунт изпраща само redirect_uri. Токенът не назовава приложение. Вашият сайт го проверява сам.

Нито единият начин не изисква разрешение от потребителя или от акаунта на вашето приложение, така че нищо в акаунта на потребителя не се променя. Hivesigner подписва входа с posting ключа или с active ключа, когато устройството няма posting ключ за акаунта.

С акаунт за приложение

  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 токен, който назовава вашето приложение, затова работи всеки от тези начини:

    • извикайте GET /api/me с него, което отговаря с акаунта в user и scope ["login"], след което декодирайте токена и проверете type и app (Попитайте API);
    • или проверете го сами с type: '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 достъп по-късно Със същия акаунт: поискайте posting и дайте разрешение на @hivesigner Първо е нужен акаунт за приложение

Използвайте акаунт за приложение, когато можете. Потребителите виждат името и снимката на вашето приложение. Вашият сървър може да отхвърля токени, създадени за друго приложение. По-късно можете да преминете към posting достъп със същия акаунт.

Използвайте втория начин, когато сайтът ви няма Hive акаунт и не иска да има.

Проверете входа безопасно

  • Свържете заявката със state. Генерирайте случайна стойност за всеки вход, съхранете я в сесията на потребителя, сравнете я на адреса за обратно извикване и я използвайте веднъж. Вижте Защитете заявката със state.
  • Проверете типа. Приемайте само signed_message.type login. Код или токен за обновяване не е вход.
  • Проверете приложението. С акаунт за приложение signed_message.app трябва да е вашето приложение. Без такъв акаунт не трябва да има app.
  • Проверете възрастта. Проверявате токена веднага след пренасочването, затова го приемайте само в рамките на няколко минути от неговия timestamp (например 5 минути, с една минута разлика в часовниците).
  • Използвайте всеки токен веднъж. След успешна проверка започнете собствена сесия (например httpOnly бисквитка) и изхвърлете токена на Hivesigner. Пазете запис на приетите токени, докато станат твърде стари, за да минат проверката за възраст. Отказвайте всеки, който видите отново.
  • Дръжте токена извън дневниците. Той пристига в query низа на вашия адрес за обратно извикване. Вижте Пазете токените.

Примери

Сайтове като https://hivesearcher.com и https://openhive.chat позволяват на хората да влизат с Hive акаунта си за функции, които остават извън блокчейна, например търсене и чат. Те трябва да знаят кой е човекът и нищо повече.