Основни понятия
Няколко идеи обясняват почти всичко в Usher: къде се намират нещата, кой издава токените, къде влизат хората и колко дълго е валиден всеки токен.
Работни пространства, проекти и среди
- Работното пространство е вашият екип или компания в Usher Console. Членовете и одитният дневник принадлежат на него.
- Проектът е един продукт: вашето уеб приложение или партньорски портал. Едно работно пространство може да съдържа много проекти.
- Средата е едно работещо копие на проекта, обикновено development (разработка) и production (продукция). В средите се намират хората, приложенията, ключовете и настройките.
Работно пространство · Acme Ltd
Проект · Уеб
- development · wise-otter-42
- production · acme
Проект · Партньорски портал
- development · calm-heron-17
- production · acme-partners
Средите не споделят нищо съществено. Всяка има собствена Postgres схема, собствени ключове за подписване и собствени тайни, запечатани под собствен ключ за данни. Човек, който се регистрира в средата за разработка, не съществува в продукционната, а токен от едната никога не може да бъде проверен с ключовете на другата.
Администратор на работното пространство може да изтрие проект от края на страницата му „Общ преглед“, след като въведе името му. Всички среди в него изчезват наведнъж: хората, приложенията, ключовете и настройките им, както и всяка сесия и всеки токен, които са издали. Адресите им спират да отговарят и никога повече не се дават на никого, така че приложение, което все още се доверява на някой от тях, не може да бъде заблудено от чужд проект.
Издатели
Всяка среда е отделен издател на OpenID Connect, на собствен хост в домейна за наематели:
https://<handle>.usherid.com- Продукционните среди имат кратко име (handle), което избирате вие: от 3 до 32 малки букви, цифри и единични тирета, например името на вашата компания. Веднъж използвано кратко име никога не се дава отново.
- Средите за разработка получават случайно кратко име, например
wise-otter-42, което никой няма да сбърка с марка.
Издателят се фиксира при създаването на средата, защото всеки токен, който тя подписва, го назовава в iss, а всяко приложение, което ѝ се доверява, проверява тази стойност.
Домейнът за наематели е различен регистрируем домейн от собствения домейн на Usher (usheridentity.com), така че страниците за вход на клиентите никога не са от същия сайт като Usher Console, а бисквитките са само за хоста: браузърът изпраща бисквитките на дадена среда единствено до нея.
Lobby
Lobby е страницата за вход, която всяка среда хоства на своя издател. Приложението ви изпраща хората там; те влизат и Lobby ги връща обратно.
- Винаги назовава приложението, към което отива човекът, в етикета „Продължавате към“.
- Предлага само методите, които средата позволява: ключове за достъп, кодове по имейл, магически връзки, социални акаунти (Google, GitHub, Microsoft, Apple) и пароли.
- Може да изисква втори фактор: приложение за удостоверяване (с резервни кодове) или ключ за достъп.
- Може да е отворено за всички или ограничено до списък с гости от адреси и домейни.
Изглежда еднакво, независимо кой продукт е изпратил човека. Това е нарочно: хората научават как изглежда истинското 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 | Токен за опресняване, за да остане човекът влязъл. |