Inicio de sesión sin acceso de publicación
Algunas aplicaciones solo necesitan saber quién es una persona en Hive. Nunca publican, votan ni transmiten nada por ella. Hivesigner puede iniciar la sesión de las personas en una aplicación así sin ninguna autoridad de publicación. La persona demuestra que controla una cuenta de Hive. Tu aplicación aprende su nombre. Esta página muestra las dos formas de hacerlo y cómo comprobar el resultado con seguridad.
Dos formas
- Con cuenta de aplicación: tu aplicación tiene su propia cuenta de Hive y pide
scope=login. El token nombra tu aplicación. - Sin cuenta de aplicación: un sitio sin cuenta de Hive propia envía solo un
redirect_uri. El token no nombra ninguna aplicación. Tu sitio lo comprueba por su cuenta.
Ninguna necesita una concesión de la persona ni de la cuenta de tu aplicación, así que nada cambia en la cuenta de la persona. Hivesigner firma el inicio de sesión con la clave de publicación, o con la clave activa cuando el dispositivo no tiene ninguna clave de publicación para la cuenta.
Con cuenta de aplicación
-
Registra tu aplicación: crea su cuenta de Hive y lista tus URL de retorno. No necesitas secreto de cliente ni concesión a @hivesigner.
-
Envía a la persona a:
https://hivesigner.com/oauth2/authorize?client_id=CLIENT_ID&redirect_uri=REDIRECT_URI&scope=login&state=STATE -
La persona ve "Iniciar sesión en APP" con el Alcance "Ver el nombre de usuario de tu cuenta". Selecciona Iniciar sesión.
-
Hivesigner redirige a tu URL de retorno:
REDIRECT_URI?state=STATE&access_token=TOKEN&expires_in=604800&username=USERNAME -
Compara
statey después comprueba el token. Es un tokenloginque nombra tu aplicación, así que sirve cualquiera de estas vías:- llama a
GET /api/mecon él, que responde con la cuenta enuseryscope["login"], y después decodifica el token y compruebatypeyapp(Pregunta a la API); - o compruébalo tú mismo con
type: 'login'y el nombre de tu aplicación.
- llama a
Un token login no puede transmitir: /api/broadcast rechaza cualquier operación enviada con él.
Sin cuenta de aplicación
-
Envía a la persona a la URL de autorización con un
redirect_uriy sinclient_id:https://hivesigner.com/oauth2/authorize?redirect_uri=REDIRECT_URI&state=STATELa URL de retorno debe ser
https://, ohttp://en bucle local (localhost,127.0.0.1,[::1]). No hay ninguna lista donde registrarla. Hivesigner ignora aquíscopeyresponse_type: la respuesta es siempre un token de inicio de sesión. -
La persona ve "HOST quiere confirmar tu nombre de usuario de Hive.", donde HOST es el host de tu URL de retorno. Selecciona Iniciar sesión.
-
Hivesigner redirige a tu URL de retorno:
REDIRECT_URI?state=STATE&access_token=TOKEN&expires_in=604800&username=USERNAME -
Compara
statey después comprueba el token tú mismo. La API no acepta un token que no nombre ninguna aplicación, así que tu servidor verifica la firma contra las claves de la cuenta. Consulta Compruébalo tú mismo, contype: 'login'y sinapp.
Cuando la URL de retorno no es una dirección web, o es http:// simple fuera del bucle local, Hivesigner rechaza la solicitud y le dice a la persona por qué.
Cuál usar
| Con cuenta de aplicación | Sin cuenta de aplicación | |
|---|---|---|
| Lo que ve la persona | El nombre, la imagen y la cuenta de Hive de tu aplicación | Solo el host de tu sitio |
| Preparación | Una cuenta de Hive con tus URL de retorno listadas | Ninguna |
| El token nombra | Tu aplicación | Ninguna aplicación |
| Comprueba el token con | /api/me o tu propio código |
Tu propio código |
| Acceso de publicación más adelante | Con la misma cuenta: pide posting y concede a @hivesigner |
Necesita antes una cuenta de aplicación |
Usa una cuenta de aplicación cuando puedas. Las personas ven el nombre y la imagen de tu aplicación. Tu servidor puede rechazar los tokens creados para otra aplicación. Más adelante puedes pasar al acceso de publicación con la misma cuenta.
Usa la segunda vía cuando tu sitio no tiene cuenta de Hive y no quiere ninguna.
Comprueba el inicio de sesión con seguridad
- Ata la solicitud con
state. Genera un valor aleatorio por inicio de sesión, guárdalo en la sesión de la persona, compáralo en tu URL de retorno y úsalo una sola vez. Consulta Protege la solicitud con state. - Comprueba el tipo. Acepta solo
signed_message.typelogin. Un código o un token de actualización no son un inicio de sesión. - Comprueba la aplicación. Con cuenta de aplicación,
signed_message.appdebe ser tu aplicación. Sin ella, no debe haber ningúnapp. - Comprueba la antigüedad. Compruebas el token justo después de la redirección, así que acéptalo solo dentro de unos pocos minutos desde su
timestamp(por ejemplo 5 minutos, con un minuto de diferencia de reloj). - Usa cada token una sola vez. Después de una comprobación correcta, inicia tu propia sesión (por ejemplo una cookie httpOnly) y descarta el token de Hivesigner. Guarda un registro de los tokens que aceptaste hasta que sean demasiado antiguos para pasar la comprobación de antigüedad. Rechaza cualquiera que vuelvas a ver.
- Mantén el token fuera de los registros. Llega en la cadena de consulta de tu URL de retorno. Consulta Mantén los tokens a salvo.
Ejemplos
Sitios como https://hivesearcher.com y https://openhive.chat permiten a las personas iniciar sesión con su cuenta de Hive para funciones que se quedan fuera de la cadena, como la búsqueda y el chat. Necesitan saber quién es la persona y nada más.