Conceitos
Algumas ideias explicam quase tudo no Usher: onde ficam as coisas, quem emite os tokens, onde as pessoas iniciam sessão e quanto tempo dura cada token.
Espaços de trabalho, projetos e ambientes
- Um espaço de trabalho é a sua equipa ou empresa na Usher Console. Os membros e o registo de auditoria pertencem-lhe.
- Um projeto é um produto: a sua app web, ou um portal de parceiros. Um espaço de trabalho pode ter vários.
- Um ambiente é uma cópia em execução de um projeto, normalmente desenvolvimento e produção. É nos ambientes que ficam as pessoas, as aplicações, as chaves e as definições.
Espaço de trabalho · Acme Lda.
Projeto · Web
- development · wise-otter-42
- production · acme
Projeto · Portal de parceiros
- development · calm-heron-17
- production · acme-partners
Os ambientes não partilham nada que importe. Cada um tem o seu próprio esquema Postgres, as suas próprias chaves de assinatura e os seus próprios segredos, selados com a sua própria chave de dados. Uma pessoa que se registe em desenvolvimento não existe em produção, e um token de um nunca pode ser validado com as chaves do outro.
Um administrador do espaço de trabalho pode eliminar um projeto no fim da respetiva Visão geral, depois de escrever o nome do projeto. Todos os ambientes do projeto desaparecem de uma vez: as pessoas, aplicações, chaves e definições de cada um, e todas as sessões e tokens que emitiram. Os endereços deixam de responder e nunca voltam a ser atribuídos, por isso uma app que ainda confie num deles não pode ser enganada pelo projeto de outra pessoa.
Emissores
Cada ambiente é um emissor OpenID Connect independente, com o seu próprio host no domínio dos inquilinos:
https://<handle>.usherid.com- Os ambientes de produção têm um identificador escolhido por si: de 3 a 32 letras minúsculas, algarismos e hífenes não consecutivos, como o nome da sua empresa. Um identificador já usado nunca volta a ser atribuído.
- Os ambientes de desenvolvimento recebem um identificador aleatório, como
wise-otter-42, que ninguém vai confundir com uma marca.
O emissor fica definido quando o ambiente é criado, porque cada token que assina o identifica em iss, e todas as apps que confiam nele verificam esse valor.
O domínio dos inquilinos é um domínio registável diferente do próprio domínio do Usher (usheridentity.com), por isso as páginas de início de sessão de um cliente nunca estão no mesmo site que a Usher Console, e os cookies são restritos ao host: um navegador envia os cookies de um ambiente apenas a esse ambiente.
O Lobby
O Lobby é a página de início de sessão que cada ambiente aloja no seu emissor. A sua app envia as pessoas para lá; o Lobby inicia-lhes a sessão e devolve-as à app.
- Indica sempre a app para onde a pessoa vai, na etiqueta “A continuar para”.
- Oferece apenas os métodos que o ambiente permite: chaves-passe, códigos por e-mail, ligações mágicas, contas sociais (Google, GitHub, Microsoft, Apple) e palavras-passe.
- Pode exigir um segundo fator: uma app de autenticação (com códigos de recuperação) ou uma chave-passe.
- Pode estar aberto a qualquer pessoa, ou limitado a uma lista de convidados com endereços e domínios.
Tem o mesmo aspeto seja qual for o produto que enviou a pessoa. É de propósito: as pessoas aprendem como é um Lobby verdadeiro, e reparam quando uma página não o é.
Contas Usher
A maioria dos ambientes tem os seus próprios utilizadores. As contas Usher são diferentes: uma só conta com que a pessoa inicia sessão em todas as apps que oferecem Continuar com o Usher. Cada pessoa gere a sua em account.usheridentity.com.
Tokens e durações
| Token | Predefinição | Pode ir de | Para que serve |
|---|---|---|---|
| Código de autorização | 5 minutos | Fixo | É trocado uma vez por tokens. De utilização única. |
| Token de ID | 10 minutos | 1 a 60 minutos | Diz à sua app quem iniciou sessão. Não serve para chamar APIs. |
| Token de acesso | 10 minutos | 1 a 60 minutos | É enviado à sua API, que o verifica. |
| Token de atualização | 30 dias | 1 a 90 dias | Obtém novos tokens de acesso. Muda a cada utilização. Requer offline_access. |
| Token de acesso de máquina | 15 minutos | 1 a 60 minutos | Para client_credentials: servidores sem uma pessoa por trás. |
| Código por e-mail, ligação mágica | 10 minutos | Fixo | Um único início de sessão. Um código permite três tentativas. |
As sessões no Lobby também têm duração: uma sessão termina ao fim de 7 dias sem utilização (de 1 a 30) e ao fim de 30 dias no total (de 1 a 90). Alterar algo sensível, como um endereço de e-mail, requer um início de sessão feito nos últimos 10 minutos.
Chaves de assinatura
Por predefinição, os tokens são assinados com RS256; um ambiente pode usar ES256 ou EdDSA em alternativa. As chaves públicas são publicadas no jwks_uri do ambiente, para que as suas bibliotecas as obtenham e recebam as novas quando as chaves são rodadas.
Âmbitos
| Âmbito | O que a sua app recebe |
|---|---|
openid | Obrigatório. Um token de ID com o sub da pessoa. |
profile | O nome e a fotografia da pessoa. |
email | O endereço de e-mail da pessoa e se está verificado. |
offline_access | Um token de atualização, para manter a sessão iniciada. |