Saltar al contenido
Documentación · Espacios de trabajo, emisores y tokens

Conceptos

Unas pocas ideas explican casi todo en Usher: dónde está cada cosa, quién emite los tokens, dónde inician sesión las personas y cuánto dura cada token.

Espacios de trabajo, proyectos y entornos

  • Un espacio de trabajo es tu equipo o tu empresa en Usher Console. Sus miembros y su registro de auditoría le pertenecen.
  • Un proyecto es un producto: tu app web o un portal de socios. Un espacio de trabajo puede contener muchos.
  • Un entorno es una copia en funcionamiento de un proyecto, normalmente desarrollo y producción. Los entornos son donde están las personas, las aplicaciones, las claves y los ajustes.

Espacio de trabajo · Acme Ltd

Proyecto · Web

  • development · wise-otter-42
  • production · acme

Proyecto · Portal de socios

  • development · calm-heron-17
  • production · acme-partners
Cada entorno es su propio emisor, con sus propios usuarios, claves y Lobby.

Los entornos no comparten nada importante. Cada uno tiene su propio esquema de Postgres, sus propias claves de firma y sus propios secretos sellados con su propia clave de datos. Una persona que se registra en desarrollo no existe en producción, y un token de uno nunca se puede verificar con las claves del otro.

Un administrador del espacio de trabajo puede eliminar un proyecto desde el final de su Resumen, tras escribir su nombre. Todos sus entornos desaparecen a la vez: sus personas, aplicaciones, claves y ajustes, y todas las sesiones y tokens que emitieron. Sus direcciones dejan de responder y nunca se vuelven a asignar, así que una app que aún confíe en una de ellas no puede ser engañada por el proyecto de otra persona.

Emisores

Cada entorno es su propio emisor de OpenID Connect, en su propio host del dominio de inquilinos:

Emisor
https://<handle>.usherid.com
  • Los entornos de producción tienen un alias que eliges tú: de 3 a 32 letras minúsculas, dígitos y guiones no consecutivos, como el nombre de tu empresa. Un alias que ya se ha usado nunca se vuelve a asignar.
  • Los entornos de desarrollo reciben un alias aleatorio, como wise-otter-42, que nadie confundirá con una marca.

El emisor queda fijado al crear el entorno, porque cada token que firma lo nombra en iss, y cada app que confía en él comprueba ese valor.

El dominio de inquilinos es un dominio registrable distinto del de Usher (usheridentity.com), así que las páginas de inicio de sesión de un cliente nunca son del mismo sitio que Usher Console, y las cookies están limitadas a su host: un navegador envía las cookies de un entorno solo a ese entorno.

El Lobby

El Lobby es la página de inicio de sesión que cada entorno aloja en su emisor. Tu app envía allí a las personas, y el Lobby inicia su sesión y las devuelve a tu app.

  • Siempre indica la app a la que va la persona, en la etiqueta «Para continuar en».
  • Solo ofrece los métodos que permite el entorno: llaves de acceso, códigos por correo electrónico, enlaces mágicos, cuentas sociales (Google, GitHub, Microsoft y Apple) y contraseñas.
  • Puede exigir un segundo factor: una app de autenticación (con códigos de reserva) o una llave de acceso.
  • Puede estar abierto a cualquiera o limitado a una lista de invitados con direcciones y dominios.

Tiene el mismo aspecto sea cual sea el producto que envíe a la persona. Es intencionado: la gente aprende cómo es un Lobby de verdad y nota cuando una página no lo es.

Cuentas de Usher

La mayoría de los entornos tienen sus propios usuarios. Las cuentas de Usher son distintas: una sola cuenta con la que una persona inicia sesión en todas las apps que ofrecen Continuar con Usher. Cada persona gestiona la suya en account.usheridentity.com.

Tokens y duración

TokenPor defectoSe puede ajustar aPara qué sirve
Código de autorización5 minutosFijoSe cambia una sola vez por tokens. De un solo uso.
Token de ID10 minutosDe 1 a 60 minutosLe dice a tu app quién ha iniciado sesión. No sirve para llamar a API.
Token de acceso10 minutosDe 1 a 60 minutosSe envía a tu API, que lo comprueba.
Token de actualización30 díasDe 1 a 90 díasObtiene nuevos tokens de acceso. Rota en cada uso. Necesita offline_access.
Token de acceso de máquina15 minutosDe 1 a 60 minutosPara client_credentials: servidores sin ninguna persona detrás.
Código por correo electrónico, enlace mágico10 minutosFijoUn solo inicio de sesión. Un código admite tres intentos.

Las sesiones del Lobby también tienen duración: una sesión termina tras 7 días sin usarse (de 1 a 30) y tras 30 días en total (de 1 a 90). Para cambiar algo delicado, como una dirección de correo electrónico, hace falta haber iniciado sesión en los últimos 10 minutos.

Claves de firma

Por defecto, los tokens se firman con RS256; un entorno puede usar ES256 o EdDSA en su lugar. Las claves públicas se publican en el jwks_uri del entorno, así que tus bibliotecas las obtienen de ahí y recogen las nuevas cuando se rotan las claves.

Ámbitos

ÁmbitoQué recibe tu app
openidObligatorio. Un token de ID con el sub de la persona.
profileSu nombre y su foto.
emailSu dirección de correo electrónico y si está verificada.
offline_accessUn token de actualización, para que mantenga la sesión iniciada.