# Приложения (SSO) Раздел «Приложения (SSO)» — список приложений, которые пускают пользователей через встроенный в локальный инстанс IdP. Приложение здесь — это сторона, доверяющая Simple2FA проверку входа: она перенаправляет пользователя на страницу входа IdP и получает результат по OIDC или SAML 2.0. Первый фактор при этом проверяется по подключённым каталогам, второй — по политике группы пользователя. Раздел работает только при включённом IdP: адрес выдачи, сроки жизни токенов и ключи подписи задаются в [«Настройках IdP»](idp-settings.md). ## Список приложений ![Список приложений SSO с протоколом и идентификатором клиента](../assets/img/sso-applications/prilozheniya-sso-tablicza.png) Таблица содержит колонки: - **Название** — имя приложения, под которым оно отображается в списке, в фильтрах и в [SSO-сессиях](sso-sessions.md); - **Протокол** — OIDC или SAML; - **ID клиента / Entity ID** — идентификатор приложения: `client_id` для OIDC, Entity ID стороны-потребителя для SAML; - **Активен** — отметка о том, что приложение принимает входы. Для перехода к настройкам приложения нажмите на его название. Новое приложение создаётся кнопкой **«+ Добавить»**; отмеченные приложения удаляются через список **«Действия»** над таблицей. ## Добавление приложения ### Основные ![Основные параметры приложения: название, протокол, режим сервисного клиента](../assets/img/sso-applications/prilozheniya-sso-dobavlenie-osnovnye.png) - **Название** — произвольное имя приложения; - **Протокол** — **OIDC** или **SAML**. От выбора зависит, какой из блоков ниже заполняется: OIDC или SAML; - **Активен** — приложение принимает входы. С выключенной отметкой настройки сохраняются, но вход через приложение не работает; - **Сервисный клиент** — режим machine-to-machine: токен выдаётся по `client_id` и секрету, без пользователя и без страницы входа. Доступен только для OIDC; URI перенаправления и доступ по группам такому приложению не нужны. Секрет создаётся при сохранении, позже его можно сгенерировать заново в блоке OIDC. ### OIDC ![Блок OIDC: идентификатор клиента, URI перенаправления, client secret](../assets/img/sso-applications/prilozheniya-sso-dobavlenie-oidc.png) Блок заполняется для приложений с протоколом OIDC. - **ID клиента** — `client_id` приложения. Заполняется автоматически при открытии формы и указывается в настройках самого приложения; - **URI перенаправления** — адреса, на которые IdP возвращает пользователя после входа. По одному URI на строку; значения должны совпадать с тем, что приложение присылает в запросе, точно, символ в символ; - **Client secret** — секрет приложения. Создаётся при сохранении; в карточке сохранённого приложения доступна кнопка **«Сгенерировать и скопировать новый client secret»**. Прежний секрет после перевыпуска перестаёт действовать — обновите его в настройках приложения. ### SAML ![Блок SAML: импорт метаданных SP, Entity ID, ACS URL, формат и источник NameID](../assets/img/sso-applications/prilozheniya-sso-dobavlenie-saml.png) Блок заполняется для приложений с протоколом 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» — адрес электронной почты. ### Сроки жизни (переопределение) ![Переопределение сроков жизни токенов для отдельного приложения](../assets/img/sso-applications/prilozheniya-sso-dobavlenie-sroki-zhizni.png) Блок задаёт сроки жизни токенов для одного приложения — в обход общих значений из [«Настроек IdP»](idp-settings.md). Пустое поле означает, что действует общее значение; подсказка под каждым полем показывает, какое именно значение сейчас применяется. Заполненное поле меняет срок только для этого приложения — глобальные настройки при сохранении не трогаются. Набор полей зависит от выбранного протокола. Для OIDC переопределяются **время жизни access-токена**, **ID-токена**, **refresh-токена** и **Authorization Code**; для SAML — **время жизни assertion** и **SessionNotOnOrAfter**. Все значения в минутах. ### Атрибуты (SAML / OIDC) ![Таблица атрибутов: имя, преобразование, источник и поведение при ошибке](../assets/img/sso-applications/prilozheniya-sso-dobavlenie-atributy.png) Блок задаёт, какие сведения о пользователе приложение получает от IdP — claim'ы в ID-токене и ответе `userinfo` для OIDC, атрибуты assertion для SAML. Пустая таблица означает, что уходит текущий набор атрибутов. Непустая таблица **полностью заменяет** его, а не дополняет: перечислите в ней все нужные атрибуты. Ссылка **«Добавить профильный набор»** подставляет текущий набор строками, чтобы его не набирать заново. ID-токен и `userinfo` делят один набор. Стандартные поля OIDC — `sub`, `iss`, `aud`, `exp` — защищены и переопределению не подлежат. Каждая строка таблицы: - **Имя** — имя claim'а или атрибута, которое увидит приложение; - **Преобразование** — как получается значение: **«Поле»** (значение как есть), **«Список в строку»**, **«Шаблон»** или **«Скрипт»**; - **Источник / выражение** — откуда берётся значение. Доступны поля пользователя (например, `user.email`), атрибуты каталога в виде `dir.`, а также `groups.names` (имена групп) и `groups.dns` (DN групп). В режиме «Скрипт» допустимы только функции `concat`, `join`, `upper`, `lower` и `coalesce` — без условий и без доступа к системе; - **При ошибке** — что делать, если значение получить не удалось: **«Отказать во входе»** (по умолчанию), **«Пропустить атрибут»** (claim не отправляется вовсе — это не пустая строка) или **«Подставить значение»** (значение задаётся в появляющемся справа поле). Синтаксис выражений проверяется при сохранении. Ошибка выполнения проявится уже при работе — в предпросмотре или при входе пользователя. ### Предпросмотр атрибутов ![Предпросмотр: выбор пользователя и итоговый набор атрибутов](../assets/img/sso-applications/prilozheniya-sso-dobavlenie-predprosmotr.png) Блок показывает, какой набор атрибутов уйдёт приложению для конкретной учётной записи. Начните вводить логин в поле поиска и выберите пользователя — рядом отобразится результат с учётом заданных правил. Так проверяются выражения и источники до того, как пользователи столкнутся с ошибкой при входе. ## Доступ к приложению Само по себе созданное приложение не пускает пользователей: доступ выдаётся через [группы пользователей](user-groups.md). В карточке группы, в блоке «Доступ», отметьте **«Все приложения (SSO)»** или выберите нужные приложения в списке **«Приложения (SSO)»**. Пользователи из групп без такого доступа получат отказ при входе. Исключение — приложения в режиме сервисного клиента: они работают без пользователя, и группы им не назначаются. ## Смотрите также - [Настройки IdP](idp-settings.md) - [SSO-сессии](sso-sessions.md) - [Группы пользователей](user-groups.md)