Accesso senza permessi di pubblicazione
Alcune app devono solo sapere chi è una persona su Hive. Non pubblicano, non votano e non trasmettono mai niente per lei. Hivesigner può far accedere le persone a un’app del genere senza alcuna autorità di pubblicazione. La persona dimostra di controllare un account Hive. La tua app ne apprende il nome. Questa pagina mostra i due modi di farlo e come controllare il risultato in sicurezza.
Due modi
- Con un account app: la tua app ha un proprio account Hive e chiede
scope=login. Il token nomina la tua app. - Senza un account app: un sito senza account Hive manda solo un
redirect_uri. Il token non nomina nessuna app. Il tuo sito lo controlla da sé.
Nessuno dei due richiede una concessione dalla persona o dall’account della tua app, quindi nell’account della persona non cambia nulla. Hivesigner firma l’accesso con la chiave di pubblicazione, oppure con la chiave attiva quando il dispositivo non ha una chiave di pubblicazione per quell’account.
Con un account app
-
Registra la tua app: crea il suo account Hive ed elenca i tuoi callback. Non ti servono né un client secret né la concessione a @hivesigner.
-
Manda la persona a:
https://hivesigner.com/oauth2/authorize?client_id=CLIENT_ID&redirect_uri=REDIRECT_URI&scope=login&state=STATE -
La persona vede «Accedi a APP» con l’Ambito «Vedere il nome utente del tuo account». Sceglie Accedi.
-
Hivesigner reindirizza al tuo callback:
REDIRECT_URI?state=STATE&access_token=TOKEN&expires_in=604800&username=USERNAME -
Confronta
state, poi controlla il token. È un tokenloginche nomina la tua app, quindi va bene una di queste due strade:- chiama
GET /api/mecon esso, che risponde con l’account inuserescope["login"], poi decodifica il token e controllatypeeapp(Chiedere all’API); - oppure controllalo tu stesso con
type: 'login'e il nome della tua app.
- chiama
Un token login non può trasmettere nulla: /api/broadcast rifiuta ogni operazione inviata con esso.
Senza un account app
-
Manda la persona all’URL di autorizzazione con un
redirect_urie senzaclient_id:https://hivesigner.com/oauth2/authorize?redirect_uri=REDIRECT_URI&state=STATEIl callback deve essere
https://, oppurehttp://su loopback (localhost,127.0.0.1,[::1]). Non c’è nessun elenco in cui registrarlo. Qui Hivesigner ignorascopeeresponse_type: la risposta è sempre un token di accesso. -
La persona vede «HOST vuole confermare il tuo nome utente Hive.», dove HOST è l’host del tuo callback. Sceglie Accedi.
-
Hivesigner reindirizza al tuo callback:
REDIRECT_URI?state=STATE&access_token=TOKEN&expires_in=604800&username=USERNAME -
Confronta
state, poi controlla il token da te. L’API non accetta un token che non nomina nessuna app, quindi il tuo server verifica la firma contro le chiavi dell’account. Vedi Controllare da sé, contype: 'login'e senzaapp.
Quando il callback non è un indirizzo web, o è http:// semplice fuori dal loopback, Hivesigner rifiuta la richiesta e spiega alla persona il motivo.
Quale usare
| Con un account app | Senza un account app | |
|---|---|---|
| Che cosa vede la persona | Nome, immagine e account Hive della tua app | Solo l’host del tuo sito |
| Preparazione | Un account Hive con i tuoi callback elencati | Nessuna |
| Il token nomina | La tua app | Nessuna app |
| Controlla il token con | /api/me o codice tuo |
Codice tuo |
| Permessi di pubblicazione più avanti | Con lo stesso account: chiedi posting e concedi a @hivesigner |
Serve prima un account app |
Usa un account app quando puoi. Gli utenti vedono il nome e l’immagine della tua app. Il tuo server può rifiutare i token creati per un’altra app. Più avanti potrai passare ai permessi di pubblicazione con lo stesso account.
Usa la seconda via quando il tuo sito non ha un account Hive e non ne vuole uno.
Controllare l’accesso in sicurezza
- Lega la richiesta con
state. Genera un valore casuale per ogni accesso, conservalo nella sessione della persona, confrontalo sul tuo callback e usalo una volta sola. Vedi Proteggere la richiesta con state. - Controlla il tipo. Accetta solo
signed_message.typeuguale alogin. Un codice o un token di aggiornamento non è un accesso. - Controlla l’app. Con un account app,
signed_message.appdeve essere la tua app. Senza, non deve esserci nessunapp. - Controlla l’età. Controlli il token subito dopo il reindirizzamento, quindi accettalo solo entro pochi minuti dal suo
timestamp(per esempio 5 minuti, con un minuto di scarto di orologio). - Usa ogni token una volta sola. Dopo un controllo riuscito, avvia la tua sessione (per esempio un cookie httpOnly) e butta via il token di Hivesigner. Tieni traccia dei token accettati finché non sono troppo vecchi per superare il controllo dell’età. Rifiuta qualunque token tu riveda.
- Tieni il token fuori dai registri. Arriva nella stringa di query del tuo callback. Vedi Tenere al sicuro i token.
Esempi
Siti come https://hivesearcher.com e https://openhive.chat permettono alle persone di accedere con il loro account Hive per funzioni che restano fuori dalla blockchain, come la ricerca e la chat. Devono sapere chi è la persona e niente di più.