Перейти до вмісту
Документація · Робочі простори, видавці й токени

Основні поняття

Кілька ідей пояснюють майже все в Usher: де що зберігається, хто видає токени, де люди входять і скільки діє кожен токен.

Робочі простори, проєкти й середовища

  • Робочий простір — це ваша команда або компанія в Usher Console. Йому належать його учасники та журнал аудиту.
  • Проєкт — це один продукт: ваша вебпрограма або партнерський портал. Робочий простір може містити багато проєктів.
  • Середовище — це одна запущена копія проєкту, зазвичай середовище розробки та робоче середовище. Саме в середовищах зберігаються люди, програми, ключі й налаштування.

Робочий простір · Acme Ltd

Проєкт · Web

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

Проєкт · Партнерський портал

  • development · calm-heron-17
  • production · acme-partners
Кожне середовище — окремий видавець із власними користувачами, ключами та Lobby.

Середовища не мають нічого спільного, що мало б значення. Кожне має власну схему Postgres, власні ключі підпису й власні секрети, запечатані власним ключем даних. Людини, яка зареєструвалася в середовищі розробки, не існує в робочому, а токен з одного середовища ніколи не пройде перевірку ключами іншого.

Адміністратор робочого простору може видалити проєкт унизу його сторінки «Огляд», ввівши його назву. Усі середовища в ньому зникають одразу: їхні люди, програми, ключі й налаштування, а також кожен сеанс і кожен токен, які вони видали. Їхні адреси перестають відповідати й ніколи не видаються вдруге, тож програму, яка досі довіряє одній із них, не вдасться ошукати чужим проєктом.

Видавці

Кожне середовище — окремий видавець OpenID Connect на власному хості в домені орендарів:

Видавець
https://<handle>.usherid.com
  • Робочі середовища мають піддомен, який ви обираєте самі: від 3 до 32 малих літер, цифр і одинарних дефісів, наприклад назва вашої компанії. Використаний піддомен ніколи не видається вдруге.
  • Середовища розробки отримують випадковий піддомен, наприклад wise-otter-42, який ніхто не сплутає з брендом.

Видавця встановлюють під час створення середовища, і змінити його вже не можна, бо кожен токен, який він підписує, називає його в iss, а кожна програма, що йому довіряє, перевіряє це значення.

Домен орендарів — інший реєстрований домен, ніж власний домен Usher (usheridentity.com), тож сторінки входу клієнта ніколи не належать до того самого сайту, що й Usher Console, а файли cookie прив’язано до хоста: браузер надсилає cookie середовища лише цьому середовищу.

Lobby

Lobby — це сторінка входу, яку кожне середовище розміщує за адресою свого видавця. Ваша програма надсилає туди людей, а Lobby виконує вхід і повертає їх назад.

  • Завжди називає програму, до якої переходить людина, у позначці «Перехід до».
  • Пропонує лише ті способи, які дозволяє середовище: ключі входу, коди й магічні посилання електронною поштою, акаунти соцмереж (Google, GitHub, Microsoft, Apple) і паролі.
  • Може вимагати другий фактор: програму для автентифікації (з резервними кодами) або ключ входу.
  • Може бути відкритим для всіх або обмеженим списком гостей з адрес і доменів.

Lobby виглядає однаково, хоч би який продукт надіслав людину. Це навмисно: люди запам’ятовують, який вигляд має справжнє Lobby, і помічають, коли сторінка ним не є.

Акаунти Usher

Більшість середовищ мають власних користувачів. Акаунти Usher — інша річ: це один акаунт, з яким людина входить у кожну програму, що пропонує «Продовжити з Usher». Люди керують своїм акаунтом на account.usheridentity.com.

Токени та строк їхньої дії

ТокенЗа замовчуваннямМожна встановитиДля чого він
Код авторизації5 хвилинФіксованоОдин раз обмінюється на токени. Одноразовий.
ID-токен10 хвилинВід 1 до 60 хвилинПовідомляє вашій програмі, хто ввійшов. Не для викликів API.
Токен доступу10 хвилинВід 1 до 60 хвилинНадсилається до вашого API, який його перевіряє.
Токен оновлення30 днівВід 1 до 90 днівОтримує нові токени доступу. Змінюється після кожного використання. Потребує offline_access.
Машинний токен доступу15 хвилинВід 1 до 60 хвилинДля client_credentials: сервери, за якими не стоїть людина.
Код електронною поштою, магічне посилання10 хвилинФіксованоДля одного входу. Код дає три спроби.

Сеанси в Lobby теж мають строк дії: сеанс завершується після 7 днів без використання (від 1 до 30) і загалом після 30 днів (від 1 до 90). Щоб змінити щось чутливе, як-от адресу електронної пошти, потрібен вхід, виконаний не раніше ніж 10 хвилин тому.

Ключі підпису

За замовчуванням токени підписуються алгоритмом RS256; середовище може натомість використовувати ES256 або EdDSA. Публічні ключі публікуються за jwks_uri середовища, тож ваші бібліотеки отримують їх самі й підхоплюють нові, коли ключі змінюються.

Області доступу

Область доступуЩо отримує ваша програма
openidОбов’язкова. ID-токен із sub людини.
profileІм’я та фото людини.
emailАдресу електронної пошти людини й те, чи її підтверджено.
offline_accessТокен оновлення, щоб людина залишалася в системі.