Основні поняття
Кілька ідей пояснюють майже все в Usher: де що зберігається, хто видає токени, де люди входять і скільки діє кожен токен.
Робочі простори, проєкти й середовища
- Робочий простір — це ваша команда або компанія в Usher Console. Йому належать його учасники та журнал аудиту.
- Проєкт — це один продукт: ваша вебпрограма або партнерський портал. Робочий простір може містити багато проєктів.
- Середовище — це одна запущена копія проєкту, зазвичай середовище розробки та робоче середовище. Саме в середовищах зберігаються люди, програми, ключі й налаштування.
Робочий простір · Acme Ltd
Проєкт · Web
- development · wise-otter-42
- production · acme
Проєкт · Партнерський портал
- development · calm-heron-17
- production · acme-partners
Середовища не мають нічого спільного, що мало б значення. Кожне має власну схему 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 | Токен оновлення, щоб людина залишалася в системі. |