Перейти к содержимому
Документация · Пространства, издатели и токены

Основные понятия

Несколько идей объясняют в Usher почти все: где что находится, кто выдает токены, где люди входят и сколько действует каждый токен.

Рабочие пространства, проекты и среды

  • Рабочее пространство — это ваша команда или компания в Usher Console. Ему принадлежат участники и журнал аудита.
  • Проект — это один продукт: ваше веб-приложение или партнерский портал. В рабочем пространстве их может быть много.
  • Среда — это одна работающая копия проекта, обычно среда разработки (development) и рабочая среда (production). В средах находятся люди, приложения, ключи и настройки.

Рабочее пространство · Acme Ltd

Проект · Web

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

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

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

У сред нет ничего общего там, где это важно. У каждой — собственная схема Postgres, собственные ключи подписи и собственные секреты, запечатанные ее собственным ключом данных. Человек, зарегистрировавшийся в среде разработки, не существует в рабочей среде, а токен из одной среды никогда не пройдет проверку ключами другой.

Администратор рабочего пространства может удалить проект в конце его страницы «Обзор», введя его название. Все среды проекта удаляются сразу: их люди, приложения, ключи и настройки, а также все сеансы и токены, которые они выдали. Их адреса перестают отвечать и больше никогда никому не выдаются, поэтому приложение, которое все еще доверяет одному из них, не обмануть чужим проектом.

Издатели

Каждая среда — отдельный издатель (issuer) OpenID Connect на собственном хосте в домене арендаторов:

Издатель
https://<handle>.usherid.com
  • У рабочих сред — поддомен, который выбираете вы: от 3 до 32 строчных букв, цифр и одиночных дефисов, например название вашей компании. Однажды использованный поддомен больше никогда никому не выдается.
  • Среды разработки получают случайный поддомен, например wise-otter-42, который никто не примет за бренд.

Издатель задается при создании среды и больше не меняется, потому что каждый подписанный им токен указывает его в iss, а каждое доверяющее ему приложение проверяет это значение.

Домен арендаторов — это другой регистрируемый домен, не тот, что у самого Usher (usheridentity.com), поэтому страницы входа клиента никогда не находятся на одном сайте (same-site) с Usher Console, а cookie привязаны к хосту: браузер отправляет cookie среды только в эту среду.

Lobby

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). Чтобы изменить что-то важное, например адрес e-mail, нужен вход, выполненный не более 10 минут назад.

Ключи подписи

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

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

ОбластьЧто получает ваше приложение
openidОбязательна. ID-токен с sub человека.
profileИмя и фото человека.
emailАдрес e-mail человека и сведения о том, подтвержден ли он.
offline_accessТокен обновления, чтобы вход сохранялся.