Inloggen zonder posting-toegang
Sommige apps hoeven alleen te weten wie iemand op Hive is. Ze posten, stemmen of zenden nooit iets voor hem uit. Hivesigner kan mensen bij zo'n app laten inloggen zonder enige posting-bevoegdheid. De persoon bewijst dat hij een Hive-account beheert. Jouw app leert de naam ervan. Deze pagina laat de twee manieren zien en hoe je het resultaat veilig controleert.
Twee manieren
- Met een app-account: jouw app heeft een eigen Hive-account en vraagt
scope=login. Het token noemt jouw app. - Zonder app-account: een site zonder eigen Hive-account stuurt alleen een
redirect_uri. Het token noemt geen app. Jouw site controleert het zelf.
Geen van beide vraagt om toestemming van de persoon of van het account van jouw app, dus er verandert niets aan het account van de persoon. Hivesigner ondertekent de inlog met de posting-sleutel, of met de active-sleutel als het apparaat geen posting-sleutel voor dat account heeft.
Met een app-account
-
Registreer je app: maak het Hive-account ervan aan en zet je callbacks erin. Je hebt geen clientgeheim en geen toestemming voor @hivesigner nodig.
-
Stuur de persoon naar:
https://hivesigner.com/oauth2/authorize?client_id=CLIENT_ID&redirect_uri=REDIRECT_URI&scope=login&state=STATE -
De persoon ziet «Inloggen bij APP» met de Reikwijdte «De gebruikersnaam van je account bekijken». Hij kiest Inloggen.
-
Hivesigner stuurt door naar jouw callback:
REDIRECT_URI?state=STATE&access_token=TOKEN&expires_in=604800&username=USERNAME -
Vergelijk
stateen controleer daarna het token. Het is eenlogin-token dat jouw app noemt, dus beide wegen werken:- roep er
GET /api/memee aan, wat antwoordt met het account inuserenscope["login"], decodeer daarna het token en controleertypeenapp(De API vragen); - of controleer het zelf met
type: 'login'en de naam van jouw app.
- roep er
Met een login-token kun je niets uitzenden: /api/broadcast weigert elke operatie die ermee wordt verstuurd.
Zonder app-account
-
Stuur de persoon naar de autorisatie-URL met een
redirect_urien zonderclient_id:https://hivesigner.com/oauth2/authorize?redirect_uri=REDIRECT_URI&state=STATEDe callback moet
https://zijn, ofhttp://op loopback (localhost,127.0.0.1,[::1]). Er is geen lijst om hem in te registreren. Hivesigner negeert hierscopeenresponse_type: het antwoord is altijd een inlogtoken. -
De persoon ziet «HOST wil je Hive-gebruikersnaam bevestigen.», waarbij HOST de host van jouw callback is. Hij kiest Inloggen.
-
Hivesigner stuurt door naar jouw callback:
REDIRECT_URI?state=STATE&access_token=TOKEN&expires_in=604800&username=USERNAME -
Vergelijk
stateen controleer het token daarna zelf. De API neemt geen token aan dat geen app noemt, dus jouw server toetst de handtekening aan de sleutels van het account. Zie Zelf controleren, mettype: 'login'en zonderapp.
Als de callback geen webadres is, of gewoon http:// buiten loopback, weigert Hivesigner het verzoek en legt de persoon uit waarom.
Welke je gebruikt
| Met een app-account | Zonder app-account | |
|---|---|---|
| Wat de persoon ziet | De naam, afbeelding en het Hive-account van jouw app | Alleen de host van jouw site |
| Voorbereiding | Een Hive-account met jouw callbacks erin | Geen |
| Het token noemt | Jouw app | Geen app |
| Controleer het token met | /api/me of eigen code |
Eigen code |
| Later posting-toegang | Met hetzelfde account: vraag posting en geef @hivesigner toestemming |
Vraagt eerst een app-account |
Gebruik een app-account als het kan. Gebruikers zien de naam en afbeelding van jouw app. Jouw server kan tokens weigeren die voor een andere app zijn gemaakt. Later kun je met hetzelfde account naar posting-toegang overstappen.
Gebruik de tweede weg als jouw site geen Hive-account heeft en er ook geen wil.
De inlog veilig controleren
- Bind het verzoek met
state. Maak per inlog een willekeurige waarde, bewaar die in de sessie van de persoon, vergelijk haar bij jouw callback en gebruik haar één keer. Zie Het verzoek beschermen met state. - Controleer het soort. Neem alleen
signed_message.typegelijk aanloginaan. Een code of een verversingstoken is geen inlog. - Controleer de app. Met een app-account moet
signed_message.appjouw app zijn. Zonder app-account mag er helemaal geenappzijn. - Controleer de leeftijd. Je controleert het token meteen na de doorverwijzing, neem het dus alleen aan binnen een paar minuten na zijn
timestamp(bijvoorbeeld 5 minuten, met een minuut klokverschil). - Gebruik elk token één keer. Start na een geslaagde controle je eigen sessie (bijvoorbeeld een httpOnly-cookie) en gooi het Hivesigner-token weg. Houd bij welke tokens je hebt aangenomen totdat ze te oud zijn om de leeftijdscontrole te halen. Weiger elk token dat je opnieuw ziet.
- Houd het token uit je logboeken. Het komt binnen in de querystring van jouw callback. Zie Tokens veilig bewaren.
Voorbeelden
Sites als https://hivesearcher.com en https://openhive.chat laten mensen met hun Hive-account inloggen voor functies die buiten de blockchain blijven, zoals zoeken en chatten. Zij hoeven alleen te weten wie de persoon is, meer niet.