Приложения (SSO)
Раздел «Приложения (SSO)» — список приложений, которые пускают пользователей через встроенный в локальный инстанс IdP. Приложение здесь — это сторона, доверяющая Simple2FA проверку входа: она перенаправляет пользователя на страницу входа IdP и получает результат по OIDC или SAML 2.0. Первый фактор при этом проверяется по подключённым каталогам, второй — по политике группы пользователя.
Раздел работает только при включённом IdP: адрес выдачи, сроки жизни токенов и ключи подписи задаются в «Настройках IdP».
Список приложений

Таблица содержит колонки:
- Название — имя приложения, под которым оно отображается в списке, в фильтрах и в SSO-сессиях;
- Протокол — OIDC или SAML;
- ID клиента / Entity ID — идентификатор приложения:
client_idдля OIDC, Entity ID стороны-потребителя для SAML; - Активен — отметка о том, что приложение принимает входы.
Для перехода к настройкам приложения нажмите на его название. Новое приложение создаётся кнопкой «+ Добавить»; отмеченные приложения удаляются через список «Действия» над таблицей.
Добавление приложения
Основные

- Название — произвольное имя приложения;
- Протокол — OIDC или SAML. От выбора зависит, какой из блоков ниже заполняется: OIDC или SAML;
- Активен — приложение принимает входы. С выключенной отметкой настройки сохраняются, но вход через приложение не работает;
- Сервисный клиент — режим machine-to-machine: токен выдаётся по
client_idи секрету, без пользователя и без страницы входа. Доступен только для OIDC; URI перенаправления и доступ по группам такому приложению не нужны. Секрет создаётся при сохранении, позже его можно сгенерировать заново в блоке OIDC.
OIDC

Блок заполняется для приложений с протоколом OIDC.
- ID клиента —
client_idприложения. Заполняется автоматически при открытии формы и указывается в настройках самого приложения; - URI перенаправления — адреса, на которые IdP возвращает пользователя после входа. По одному URI на строку; значения должны совпадать с тем, что приложение присылает в запросе, точно, символ в символ;
- Client secret — секрет приложения. Создаётся при сохранении; в карточке сохранённого приложения доступна кнопка «Сгенерировать и скопировать новый client secret». Прежний секрет после перевыпуска перестаёт действовать — обновите его в настройках приложения.
SAML

Блок заполняется для приложений с протоколом SAML.
- Импорт метаданных SP по URL — разовое заполнение Entity ID и ACS URL из метаданных приложения при сохранении. Это не автообновление: при недоступном URL форма не сохранится;
- Импорт метаданных SP из файла — то же из загруженного XML-файла;
- Метаданные SP (XML) — метаданные приложения текстом, если импорт не используется;
- Entity ID (SP) — идентификатор приложения как стороны-потребителя;
- ACS URL — адрес Assertion Consumer Service, на который IdP отправляет assertion;
- Формат NameID — формат идентификатора пользователя в assertion: «Не указан (unspecified)», «Email (emailAddress)», «Постоянный (persistent)» или «Временный (transient)»;
- Источник NameID — какое поле учётной записи подставляется в NameID: «Логин», «Email», «Стабильный идентификатор» или «UPN». Источник учитывается только для формата «Не указан»: «Постоянный» всегда берёт стабильный идентификатор, «Временный» — случайное значение на сессию, «Email» — адрес электронной почты.
Сроки жизни (переопределение)

Блок задаёт сроки жизни токенов для одного приложения — в обход общих значений из «Настроек IdP». Пустое поле означает, что действует общее значение; подсказка под каждым полем показывает, какое именно значение сейчас применяется. Заполненное поле меняет срок только для этого приложения — глобальные настройки при сохранении не трогаются.
Набор полей зависит от выбранного протокола. Для OIDC переопределяются время жизни access-токена, ID-токена, refresh-токена и Authorization Code; для SAML — время жизни assertion и SessionNotOnOrAfter. Все значения в минутах.
Атрибуты (SAML / OIDC)

Блок задаёт, какие сведения о пользователе приложение получает от IdP — claim'ы в ID-токене и ответе userinfo для OIDC, атрибуты assertion для SAML.
Пустая таблица означает, что уходит текущий набор атрибутов. Непустая таблица полностью заменяет его, а не дополняет: перечислите в ней все нужные атрибуты. Ссылка «Добавить профильный набор» подставляет текущий набор строками, чтобы его не набирать заново. ID-токен и userinfo делят один набор. Стандартные поля OIDC — sub, iss, aud, exp — защищены и переопределению не подлежат.
Каждая строка таблицы:
- Имя — имя claim'а или атрибута, которое увидит приложение;
- Преобразование — как получается значение: «Поле» (значение как есть), «Список в строку», «Шаблон» или «Скрипт»;
- Источник / выражение — откуда берётся значение. Доступны поля пользователя (например,
user.email), атрибуты каталога в видеdir.<LDAP-атрибут>, а такжеgroups.names(имена групп) иgroups.dns(DN групп). В режиме «Скрипт» допустимы только функцииconcat,join,upper,lowerиcoalesce— без условий и без доступа к системе; - При ошибке — что делать, если значение получить не удалось: «Отказать во входе» (по умолчанию), «Пропустить атрибут» (claim не отправляется вовсе — это не пустая строка) или «Подставить значение» (значение задаётся в появляющемся справа поле).
Синтаксис выражений проверяется при сохранении. Ошибка выполнения проявится уже при работе — в предпросмотре или при входе пользователя.
Предпросмотр атрибутов

Блок показывает, какой набор атрибутов уйдёт приложению для конкретной учётной записи. Начните вводить логин в поле поиска и выберите пользователя — рядом отобразится результат с учётом заданных правил. Так проверяются выражения и источники до того, как пользователи столкнутся с ошибкой при входе.
Доступ к приложению
Само по себе созданное приложение не пускает пользователей: доступ выдаётся через группы пользователей. В карточке группы, в блоке «Доступ», отметьте «Все приложения (SSO)» или выберите нужные приложения в списке «Приложения (SSO)». Пользователи из групп без такого доступа получат отказ при входе.
Исключение — приложения в режиме сервисного клиента: они работают без пользователя, и группы им не назначаются.