Ir 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 ejecución de un proyecto, normalmente desarrollo y producción. En los entornos están las personas, las aplicaciones, las claves y la configuración.

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, después de escribir su nombre. Todos sus entornos se eliminan a la vez: sus personas, aplicaciones, claves y configuración, 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 dentro del dominio de inquilinos:

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

El emisor queda fijo 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 son solo del host: un navegador envía las cookies de un entorno únicamente 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 a las personas allí; el Lobby inicia su sesión y las devuelve.

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

Se ve igual sin importar qué producto envió a la persona. Es a propósito: las personas aprenden cómo es un Lobby real y notan 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 administra la suya en account.usheridentity.com.

Tokens y duración

TokenPredeterminadoSe puede configurar enPara 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 inició 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 con cada uso. Requiere offline_access.
Token de acceso de máquina15 minutosDe 1 a 60 minutosPara client_credentials: servidores sin una persona detrás.
Código por correo, enlace mágico10 minutosFijoUn solo inicio de sesión. Un código permite tres intentos.

Las sesiones del Lobby también tienen una duración: una sesión termina tras 7 días sin uso (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, se necesita un inicio de sesión de los últimos 10 minutos.

Claves de firma

Los tokens se firman con RS256 de forma predeterminada; 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 toman las nuevas cuando se rotan las claves.

Alcances

AlcanceLo que 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 la sesión siga iniciada.