Aller au contenu
Documentation · Espaces de travail, émetteurs et jetons

Concepts

Quelques idées expliquent presque tout dans Usher : où se trouvent les choses, qui émet les jetons, où les utilisateurs se connectent, et combien de temps dure chaque jeton.

Espaces de travail, projets et environnements

  • Un espace de travail représente votre équipe ou votre entreprise dans Usher Console. Ses membres et son journal d’audit lui appartiennent.
  • Un projet correspond à un produit : votre app Web ou un portail partenaires. Un espace de travail peut en contenir plusieurs.
  • Un environnement est une instance en service d’un projet, généralement développement et production. C’est dans les environnements que se trouvent les utilisateurs, les applications, les clés et les paramètres.

Espace de travail · Acme inc.

Projet · Web

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

Projet · Portail partenaires

  • development · calm-heron-17
  • production · acme-partners
Chaque environnement est son propre émetteur, avec ses propres utilisateurs, clés et Lobby.

Les environnements ne partagent rien d’important. Chacun a son propre schéma Postgres, ses propres clés de signature et ses propres secrets, scellés sous sa propre clé de données. Une personne qui s’inscrit en développement n’existe pas en production, et un jeton de l’un ne peut jamais être vérifié avec les clés de l’autre.

Un administrateur de l’espace de travail peut supprimer un projet depuis le bas de sa Vue d’ensemble, après avoir saisi son nom. Tous ses environnements disparaissent d’un coup : leurs utilisateurs, applications, clés et paramètres, et chaque session et chaque jeton qu’ils ont émis. Leurs adresses cessent de répondre et ne sont jamais réattribuées : une app qui fait encore confiance à l’une d’elles ne peut donc pas être trompée par le projet de quelqu’un d’autre.

Émetteurs

Chaque environnement est son propre émetteur OpenID Connect, sur son propre hôte du domaine des locataires :

Émetteur
https://<handle>.usherid.com
  • Les environnements de production ont un identifiant que vous choisissez : de 3 à 32 lettres minuscules, chiffres et traits d’union non consécutifs, comme le nom de votre entreprise. Un identifiant déjà utilisé n’est jamais réattribué.
  • Les environnements de développement reçoivent un identifiant aléatoire, comme wise-otter-42, que personne ne prendra pour une marque.

L’émetteur est fixé à la création de l’environnement, car chaque jeton qu’il signe le nomme dans iss, et chaque app qui lui fait confiance vérifie cette valeur.

Le domaine des locataires est un domaine enregistrable différent de celui d’Usher (usheridentity.com) : les pages de connexion d’un client ne sont donc jamais sur le même site qu’Usher Console, et les cookies sont limités à leur hôte. Un navigateur n’envoie les cookies d’un environnement qu’à cet environnement.

Le Lobby

Le Lobby est la page de connexion que chaque environnement héberge sur son émetteur. Votre app y envoie les utilisateurs; il les connecte et les renvoie vers elle.

  • Il nomme toujours l’app vers laquelle va la personne, dans la puce « En route vers ».
  • Il ne propose que les méthodes que l’environnement autorise : clés d’accès, codes par courriel, liens magiques, comptes sociaux (Google, GitHub, Microsoft, Apple) et mots de passe.
  • Il peut exiger un second facteur : une app d’authentification (avec codes de secours) ou une clé d’accès.
  • Il peut être ouvert à tous, ou limité à une liste d’invités composée d’adresses et de domaines.

Il a le même aspect quel que soit le produit qui envoie la personne. C’est voulu : les utilisateurs apprennent à quoi ressemble un vrai Lobby, et remarquent quand une page n’en est pas un.

Comptes Usher

La plupart des environnements ont leurs propres utilisateurs. Les comptes Usher sont différents : un seul compte qui connecte une personne à toutes les apps qui proposent Continuer avec Usher. Chacun gère le sien sur account.usheridentity.com.

Jetons et durées de vie

JetonPar défautRéglableÀ quoi il sert
Code d’autorisation5 minutesFixeÉchangé une fois contre des jetons. À usage unique.
Jeton d’ID10 minutesDe 1 à 60 minutesIndique à votre app qui s’est connecté. Pas pour appeler des API.
Jeton d’accès10 minutesDe 1 à 60 minutesEnvoyé à votre API, qui le vérifie.
Jeton d’actualisation30 joursDe 1 à 90 joursPermet d’obtenir de nouveaux jetons d’accès. Renouvelé à chaque utilisation. Nécessite offline_access.
Jeton d’accès machine15 minutesDe 1 à 60 minutesPour client_credentials : des serveurs sans personne derrière.
Code par courriel, lien magique10 minutesFixeUne seule connexion. Un code autorise trois essais.

Les sessions du Lobby ont elles aussi une durée de vie : une session prend fin après 7 jours sans utilisation (de 1 à 30), et après 30 jours au total (de 1 à 90). Modifier une information sensible, comme une adresse courriel, nécessite une connexion datant de moins de 10 minutes.

Clés de signature

Les jetons sont signés avec RS256 par défaut; un environnement peut utiliser ES256 ou EdDSA à la place. Les clés publiques sont publiées au jwks_uri de l’environnement : vos bibliothèques les récupèrent, et prennent en compte les nouvelles lors de la rotation des clés.

Portées

PortéeCe que reçoit votre app
openidObligatoire. Un jeton d’ID avec le sub de la personne.
profileSon nom et sa photo.
emailSon adresse courriel, et si elle est vérifiée.
offline_accessUn jeton d’actualisation, pour qu’elle reste connectée.