Logowanie bez dostępu do publikowania
Niektóre aplikacje muszą tylko wiedzieć, kim jest dana osoba w Hive. Nigdy nie publikują, nie głosują ani niczego w jej imieniu nie rozgłaszają. Hivesigner potrafi zalogować ludzi do takiej aplikacji bez żadnego uprawnienia do publikowania. Osoba dowodzi, że zarządza kontem Hive. Twoja aplikacja poznaje jego nazwę. Ta strona pokazuje dwa sposoby i to, jak bezpiecznie sprawdzić wynik.
Dwa sposoby
- Z kontem aplikacji: Twoja aplikacja ma własne konto Hive i prosi o
scope=login. Token wskazuje Twoją aplikację. - Bez konta aplikacji: witryna bez własnego konta Hive wysyła tylko
redirect_uri. Token nie wskazuje żadnej aplikacji. Twoja witryna sprawdza go sama.
Żaden z tych sposobów nie wymaga zgody osoby ani konta Twojej aplikacji, więc na koncie osoby nic się nie zmienia. Hivesigner podpisuje logowanie kluczem publikowania albo kluczem aktywnym, gdy urządzenie nie ma klucza publikowania do tego konta.
Z kontem aplikacji
-
Zarejestruj aplikację: utwórz jej konto Hive i wypisz swoje adresy zwrotne. Nie potrzebujesz sekretu klienta ani zgody dla @hivesigner.
-
Wyślij osobę pod adres:
https://hivesigner.com/oauth2/authorize?client_id=CLIENT_ID&redirect_uri=REDIRECT_URI&scope=login&state=STATE -
Osoba widzi «Zaloguj się do aplikacji APP» z Zakres «Odczyt nazwy użytkownika Twojego konta». Wybiera Zaloguj się.
-
Hivesigner przekierowuje na Twój adres zwrotny:
REDIRECT_URI?state=STATE&access_token=TOKEN&expires_in=604800&username=USERNAME -
Porównaj
state, a potem sprawdź token. To tokenloginwskazujący Twoją aplikację, więc zadziała każda z tych dróg:- wywołaj nim
GET /api/me, które odpowiada kontem wuseriscoperównym["login"], a potem zdekoduj token i sprawdźtypeorazapp(Zapytaj API); - albo sprawdź go samodzielnie z
type: 'login'i nazwą swojej aplikacji.
- wywołaj nim
Token login niczego nie rozgłosi: /api/broadcast odrzuca każdą operację wysłaną z nim.
Bez konta aplikacji
-
Wyślij osobę na adres autoryzacji z
redirect_urii bezclient_id:https://hivesigner.com/oauth2/authorize?redirect_uri=REDIRECT_URI&state=STATEAdres zwrotny musi być
https://albohttp://na pętli zwrotnej (localhost,127.0.0.1,[::1]). Nie ma listy, w której się go rejestruje. Hivesigner pomija tuscopeiresponse_type: odpowiedzią zawsze jest token logowania. -
Osoba widzi «Witryna HOST chce potwierdzić Twoją nazwę użytkownika Hive.», gdzie HOST to host Twojego adresu zwrotnego. Wybiera Zaloguj się.
-
Hivesigner przekierowuje na Twój adres zwrotny:
REDIRECT_URI?state=STATE&access_token=TOKEN&expires_in=604800&username=USERNAME -
Porównaj
state, a potem sprawdź token samodzielnie. API nie przyjmuje tokenu, który nie wskazuje aplikacji, więc Twój serwer weryfikuje podpis wobec kluczy konta. Zobacz Sprawdź samodzielnie, ztype: 'login'i bezapp.
Gdy adres zwrotny nie jest adresem sieciowym albo jest zwykłym http:// poza pętlą zwrotną, Hivesigner odrzuca żądanie i wyjaśnia osobie dlaczego.
Którego sposobu użyć
| Z kontem aplikacji | Bez konta aplikacji | |
|---|---|---|
| Co widzi osoba | Nazwę, obraz i konto Hive Twojej aplikacji | Tylko host Twojej witryny |
| Przygotowanie | Konto Hive z wypisanymi adresami zwrotnymi | Żadne |
| Token wskazuje | Twoją aplikację | Żadnej aplikacji |
| Sprawdź token przez | /api/me albo własny kod |
Własny kod |
| Dostęp do publikowania później | Tym samym kontem: poproś o posting i udziel zgody @hivesigner |
Najpierw potrzeba konta aplikacji |
Używaj konta aplikacji, gdy tylko możesz. Użytkownicy widzą nazwę i obraz Twojej aplikacji. Twój serwer może odrzucać tokeny utworzone dla innej aplikacji. Później możesz tym samym kontem przejść do dostępu do publikowania.
Drugiej drogi użyj, gdy Twoja witryna nie ma konta Hive i nie chce go mieć.
Bezpiecznie sprawdź logowanie
- Zwiąż żądanie przez
state. Utwórz losową wartość dla każdego logowania, zapisz ją w sesji osoby, porównaj na swoim adresie zwrotnym i użyj jej raz. Zobacz Chroń żądanie przez state. - Sprawdź rodzaj. Przyjmuj tylko
signed_message.typerównelogin. Kod ani token odświeżania nie są logowaniem. - Sprawdź aplikację. Z kontem aplikacji
signed_message.appmusi być Twoją aplikacją. Bez niego nie powinno być żadnegoapp. - Sprawdź wiek. Token sprawdzasz zaraz po przekierowaniu, więc przyjmuj go tylko w ciągu kilku minut od jego
timestamp(na przykład 5 minut, z minutą różnicy zegarów). - Każdego tokenu użyj raz. Po udanym sprawdzeniu rozpocznij własną sesję (na przykład ciasteczko httpOnly) i wyrzuć token Hivesigner. Prowadź spis przyjętych tokenów, dopóki nie staną się zbyt stare, by przejść kontrolę wieku. Odrzucaj każdy, który zobaczysz ponownie.
- Trzymaj token poza dziennikami. Przychodzi w ciągu zapytania Twojego adresu zwrotnego. Zobacz Trzymaj tokeny bezpiecznie.
Przykłady
Witryny takie jak https://hivesearcher.com i https://openhive.chat pozwalają ludziom logować się kontem Hive do funkcji, które zostają poza blockchainem, jak wyszukiwanie i czat. Muszą wiedzieć tylko, kim jest dana osoba, i nic więcej.