[Документация Yandex Cloud](../../../index.md) > [Yandex Identity Hub](../../index.md) > [Пошаговые инструкции](../index.md) > Управление приложениями (SSO) > SAML-приложения > Создать приложение

# Создать SAML-приложение в Yandex Identity Hub


{% note warning %}

Функциональность доступна только в [регионе Россия](../../../overview/concepts/region.md).

{% endnote %}


Чтобы пользователи вашей [организации](../../concepts/organization.md) могли аутентифицироваться во внешних приложениях с помощью технологии единого входа по стандарту [SAML](https://ru.wikipedia.org/wiki/SAML), создайте [SAML-приложение](../../concepts/applications/saml.md) в Yandex Identity Hub и настройте его на стороне Yandex Identity Hub и на стороне поставщика услуг.

Управлять SAML-приложениями может пользователь, которому назначена [роль](../../security/index.md#organization-manager-samlApplications-admin) `organization-manager.samlApplications.admin` или выше.

## Создайте приложение {#create-app}

{% list tabs group=instructions %}

- Интерфейс Cloud Center {#cloud-center}

  1. Войдите в сервис [Yandex Identity Hub](https://kz.center.yandex.cloud/organization).
  1. На панели слева выберите ![shapes-4](../../../_assets/console-icons/shapes-4.svg) **Приложения**.
  1. В правом верхнем углу страницы нажмите ![Circles3Plus](../../../_assets/console-icons/circles-3-plus.svg) **Создать приложение** и в открывшемся окне:
      1. Выберите метод единого входа **SAML (Security Assertion Markup Language)**.
      1. В поле **Имя** задайте имя создаваемого приложения. Имя должно быть уникальным в пределах организации и соответствовать требованиям:

          * длина — от 1 до 63 символов;
          * может содержать строчные буквы латинского алфавита, цифры и дефисы;
          * первый символ — буква, последний — не дефис.

      1. (Опционально) В поле **Описание** задайте описание приложения.
      1. (Опционально) Добавьте [метки](../../../resource-manager/concepts/labels.md):

          1. Нажмите **Добавить метку**.
          1. Введите метку в формате `ключ: значение`.
          1. Нажмите **Enter**.
      1. Нажмите кнопку **Создать приложение**.

- CLI {#cli}

  Если у вас еще нет интерфейса командной строки Yandex Cloud (CLI), [установите и инициализируйте его](../../../cli/quickstart.md#install).

  По умолчанию используется каталог, указанный при [создании](../../../cli/operations/profile/profile-create.md) профиля CLI. Чтобы изменить каталог по умолчанию, используйте команду `yc config set folder-id <идентификатор_каталога>`. Также для любой команды вы можете указать другой каталог с помощью параметров `--folder-name` или `--folder-id`. Если вы обращаетесь к ресурсу по имени, поиск будет выполнен в каталоге по умолчанию. Если вы обращаетесь к ресурсу по идентификатору, поиск будет выполнен глобально — во всех каталогах с учетом прав доступа.

  1. Посмотрите описание команды CLI для создания SAML-приложения:

     ```bash
     yc organization-manager idp application saml application create --help
     ```

  1. Создайте SAML-приложение:

     ```bash
     yc organization-manager idp application saml application create \
       --organization-id <идентификатор_организации> \
       --name <имя_приложения> \
       --description <описание_приложения> \
       --labels <ключ>=<значение>[,<ключ>=<значение>]
     ```

     Где:

     * `--organization-id` — [идентификатор организации](../organization-get-id.md), в которой нужно создать SAML-приложение. Обязательный параметр.
     * `--name` — имя SAML-приложения. Обязательный параметр. Имя должно быть уникальным в пределах организации и соответствовать требованиям:

       * длина — от 1 до 63 символов;
       * может содержать строчные буквы латинского алфавита, цифры и дефисы;
       * первый символ — буква, последний — не дефис.

     * `--description` — описание SAML-приложения. Необязательный параметр.
     * `--labels` — список [меток](../../../resource-manager/concepts/labels.md). Необязательный параметр. Можно указать одну или несколько меток через запятую в формате `<ключ1>=<значение1>,<ключ2>=<значение2>`.

     Результат:

     ```text
     id: ek0o663g4rs2********
     name: saml-app
     organization_id: bpf2c65rqcl8********
     group_claims_settings:
       group_distribution_type: NONE
     status: ACTIVE
     created_at: "2025-10-21T10:51:28.790866Z"
     updated_at: "2025-10-21T12:37:19.274522Z"
     ```

     Сохраните значение поля `id`, оно понадобится для настройки приложения.

  1. (Опционально) Получите информацию о сертификатах приложения:

     ```bash
     yc organization-manager idp application saml signature-certificate list \
       --application-id <идентификатор_приложения>
     ```

     При создании SAML-приложения автоматически создается сертификат для проверки подписи SAML-ответов.

- Terraform {#tf}

  Если у вас еще нет Terraform, [установите его и настройте провайдер Yandex Cloud](../../../tutorials/infrastructure-management/terraform-quickstart.md#install-terraform).
  
  
  Чтобы управлять инфраструктурой с помощью Terraform от имени сервисного аккаунта или пользовательских аккаунтов: аккаунта на Яндексе, федеративного аккаунта и локального пользователя, [аутентифицируйтесь](../../../terraform/authentication.md) соответствующим способом.

  1. Опишите в конфигурационном файле параметры SAML-приложения:

     ```hcl
     resource "yandex_organizationmanager_idp_application_saml_application" "saml_app" {
       organization_id = "<идентификатор_организации>"
       name            = "<имя_приложения>"
       description     = "<описание_приложения>"
       labels          = {
         "<ключ>" = "<значение>"
       }
     }
     ```

     Где:

     * `organization_id` — [идентификатор организации](../organization-get-id.md), в которой нужно создать SAML-приложение. Обязательный параметр.
     * `name` — имя SAML-приложения. Обязательный параметр. Имя должно быть уникальным в пределах организации и соответствовать требованиям:

         * длина — от 1 до 63 символов;
         * может содержать строчные буквы латинского алфавита, цифры и дефисы;
         * первый символ — буква, последний — не дефис.

     * `description` — описание SAML-приложения. Необязательный параметр.
     * `labels` — список [меток](../../../resource-manager/concepts/labels.md). Необязательный параметр.

     Подробнее о параметрах ресурса `yandex_organizationmanager_idp_application_saml_application` читайте в [документации провайдера](../../../terraform/resources/organizationmanager_idp_application_saml_application.md).

  1. Создайте ресурсы:

     1. В терминале перейдите в директорию с конфигурационным файлом.
     1. Проверьте корректность конфигурации с помощью команды:
     
        ```bash
        terraform validate
        ```
     
        Если конфигурация является корректной, появится сообщение:
     
        ```bash
        Success! The configuration is valid.
        ```
     
     1. Выполните команду:
     
        ```bash
        terraform plan
        ```
     
        В терминале будет выведен список ресурсов с параметрами. На этом этапе изменения не будут внесены. Если в конфигурации есть ошибки, Terraform на них укажет.
     1. Примените изменения конфигурации:
     
        ```bash
        terraform apply
        ```
     
     1. Подтвердите изменения: введите в терминале слово `yes` и нажмите **Enter**.

     Terraform создаст все требуемые ресурсы. Проверить появление ресурсов и их настройки можно в [интерфейсе Cloud Center](https://kz.center.yandex.cloud/organization).

   При создании SAML-приложения автоматически создается сертификат для проверки подписи SAML-ответов.

- API {#api}

  Воспользуйтесь методом REST API [Application.Create](../../idp/application/saml/api-ref/Application/create.md) для ресурса [Application](../../idp/application/saml/api-ref/Application/index.md) или вызовом gRPC API [ApplicationService/Create](../../idp/application/saml/api-ref/grpc/Application/create.md).

{% endlist %}

## Настройте приложение {#setup-application}

Чтобы настроить интеграцию внешнего приложения с созданным SAML-приложением в Yandex Identity Hub, выполните настройки на стороне поставщика услуг и на стороне Yandex Identity Hub.

### Задайте настройки интеграции на стороне поставщика услуг {#setup-sp}

Значения настроек интеграции, которые нужно задать на стороне поставщика услуг, доступны на странице с информацией о приложении в [интерфейсе Cloud Center](https://kz.center.yandex.cloud/organization/apps).

В зависимости от возможностей вашего поставщика услуг вы можете выполнить необходимые настройки вручную или автоматически, загрузив файл с метаданными или указав URL с метаданными:

{% list tabs %}

- Настройка вручную

  1. Войдите в сервис [Yandex Identity Hub](https://kz.center.yandex.cloud/organization).
  1. На панели слева выберите ![shapes-4](../../../_assets/console-icons/shapes-4.svg) **Приложения** и выберите нужное SAML-приложение.
  1. На вкладке **Обзор** в блоке **Конфигурация поставщика удостоверений (IdP)** скопируйте значения параметров, которые необходимо задать на стороне поставщика услуг:

      * `Issuer / IdP EntityID` — уникальный идентификатор, используемый для приложения. Значение должно совпадать на стороне поставщика услуг и на стороне Yandex Identity Hub.
      * `Login URL` — адрес, на который поставщик услуг будет отправлять запросы для аутентификации пользователя.
      * `Logout URL` — адрес, на который поставщик услуг будет отправлять SAML-запрос при выходе пользователя из системы.

  1. Скачайте сертификат приложения в блоке **Сертификат приложения**, нажав кнопку **Скачать сертификат**.
  1. На стороне поставщика услуг настройте интеграцию с SAML-приложением Yandex Identity Hub, указав скопированные параметры и добавив скачанный сертификат. При необходимости обратитесь к документации или в службу поддержки вашего поставщика услуг.

- Файл с метаданными

  1. Войдите в сервис [Yandex Identity Hub](https://kz.center.yandex.cloud/organization).
  1. На панели слева выберите ![shapes-4](../../../_assets/console-icons/shapes-4.svg) **Приложения** и выберите нужное SAML-приложение.
  1. На вкладке **Обзор** в блоке **Конфигурация поставщика удостоверений (IdP)** нажмите кнопку **Скачать файл с метаданными**.

      Скачанный [XML](https://ru.wikipedia.org/wiki/XML)-файл содержит значения всех необходимых настроек и сертификат, который используется для проверки подписи SAML-ответов. Загрузите скачанный файл на стороне поставщика услуг, если ваш поставщик услуг поддерживает конфигурирование приложения с помощью файла с метаданными. При необходимости обратитесь к документации или в службу поддержки вашего поставщика услуг.

- URL с метаданными

  1. Войдите в сервис [Yandex Identity Hub](https://kz.center.yandex.cloud/organization).
  1. На панели слева выберите ![shapes-4](../../../_assets/console-icons/shapes-4.svg) **Приложения** и выберите нужное SAML-приложение.
  1. На вкладке **Обзор** в блоке **Конфигурация поставщика удостоверений (IdP)** скопируйте значение поля **Metadata URL**.

      По ссылке доступны значения всех необходимых настроек и сертификат, который используется для проверки подписи SAML-ответов. Укажите полученную ссылку в настройках на стороне поставщика услуг, если ваш поставщик услуг поддерживает конфигурирование приложения с помощью URL с метаданными. При необходимости обратитесь к документации или в службу поддержки вашего поставщика услуг.

{% endlist %}

### Настройте SAML-приложение на стороне Yandex Identity Hub {#setup-idp}

Прежде чем настраивать SAML-приложение на стороне Yandex Identity Hub, получите необходимые значения настроек у вашего поставщика услуг. Затем перейдите к настройкам SAML-приложения в Yandex Identity Hub:

{% list tabs group=instructions %}

- Интерфейс Cloud Center {#cloud-center}

  1. Войдите в сервис [Yandex Identity Hub](https://kz.center.yandex.cloud/organization).
  1. На панели слева выберите ![shapes-4](../../../_assets/console-icons/shapes-4.svg) **Приложения** и выберите нужное SAML-приложение.
  1. Справа сверху нажмите кнопку ![pencil](../../../_assets/console-icons/pencil.svg) **Редактировать** и в открывшемся окне:
     
     1. В поле **SP EntityID** укажите уникальный идентификатор поставщика услуг (Service Provider).
     
         Значение должно совпадать на стороне поставщика услуг и на стороне Yandex Identity Hub.
     1. В поле **ACS URL** укажите URL-адрес, на который Yandex Identity Hub будет отправлять SAML-ответ.
     
         Если ваш поставщик услуг вместо ACS URL использует ACS-индексы, в дополнение к ACS URL вы можете задать полученное на стороне поставщика услуг значение индекса.
     
         При необходимости воспользуйтесь кнопкой **Добавить URL**, чтобы указать несколько URL/индексов ACS.
     
         {% note info %}
         
         Если в настройках поля **ACS URL** для одного из URL-адресов вы указали индекс, то индексы также должны быть указаны и для всех остальных URL-адресов.
         
         {% endnote %}
     
     1. В поле **Режим подписи** выберите элементы SAML-ответа, которые будут подписываться электронной подписью:
     
         * `Assertions` — будут подписываться только передаваемые атрибуты. Значение по умолчанию.
         * `Response` — будет подписываться весь SAML-ответ целиком.
         * `Assertions and Response` — будут подписываться как целиком весь SAML-ответ, так и (отдельно) передаваемые атрибуты.
         
         {% note warning %}
         
         Режим подписи, заданный для SAML-приложения на стороне Yandex Identity Hub, должен соответствовать режиму подписи, заданному на стороне поставщика услуг.
         
         {% endnote %}
     
     1. Нажмите кнопку **Сохранить**.

- CLI {#cli}

  Если у вас еще нет интерфейса командной строки Yandex Cloud (CLI), [установите и инициализируйте его](../../../cli/quickstart.md#install).

  По умолчанию используется каталог, указанный при [создании](../../../cli/operations/profile/profile-create.md) профиля CLI. Чтобы изменить каталог по умолчанию, используйте команду `yc config set folder-id <идентификатор_каталога>`. Также для любой команды вы можете указать другой каталог с помощью параметров `--folder-name` или `--folder-id`. Если вы обращаетесь к ресурсу по имени, поиск будет выполнен в каталоге по умолчанию. Если вы обращаетесь к ресурсу по идентификатору, поиск будет выполнен глобально — во всех каталогах с учетом прав доступа.

  1. Посмотрите описание команды CLI для настройки SAML-приложения:

     ```bash
     yc organization-manager idp application saml application update --help
     ```

  1. Выполните команду для настройки параметров поставщика услуг:

     ```bash
     yc organization-manager idp application saml application update \
       --id <идентификатор_приложения> \
       --sp-entity-id <идентификатор_поставщика_услуг> \
       --acs-urls <URL>[,<URL>] \
       --signature-mode <режим_подписи>
     ```

     Где:

     * `--id` — идентификатор SAML-приложения. Обязательный параметр.
     * `--sp-entity-id` — уникальный идентификатор поставщика услуг (Service Provider). Значение должно совпадать на стороне поставщика услуг и на стороне Yandex Identity Hub.
     * `--acs-urls` — URL-адрес или несколько адресов через запятую, на которые Yandex Identity Hub будет отправлять SAML-ответ. ACS URL должен соответствовать схеме `https`. Использовать протокол без шифрования допускается только в целях тестирования на локальном хосте (значения `http://127.0.0.1` и `http://localhost`).
     * `--signature-mode` — элементы SAML-ответа, которые будут подписываться электронной подписью. Возможные значения:
       * `assertion_only` — только передаваемые атрибуты пользователя;
       * `response_only` — весь SAML-ответ целиком;
       * `response_and_assertion` — целиком весь SAML-ответ и (отдельно) передаваемые атрибуты.

     Результат:

     ```text
     id: ek0o663g4rs2********
     name: saml-app
     organization_id: bpf2c65rqcl8********
     sp_entity_id: https://example.com/saml
     acs_urls:
       - url: https://example.com/saml/acs
     signature_mode: RESPONSE_AND_ASSERTION
     group_claims_settings:
       group_distribution_type: NONE
     status: ACTIVE
     created_at: "2025-10-21T10:51:28.790866Z"
     updated_at: "2025-10-21T12:37:19.274522Z"
     ```

- Terraform {#tf}

  Если у вас еще нет Terraform, [установите его и настройте провайдер Yandex Cloud](../../../tutorials/infrastructure-management/terraform-quickstart.md#install-terraform).
  
  
  Чтобы управлять инфраструктурой с помощью Terraform от имени сервисного аккаунта или пользовательских аккаунтов: аккаунта на Яндексе, федеративного аккаунта и локального пользователя, [аутентифицируйтесь](../../../terraform/authentication.md) соответствующим способом.

  1. Опишите в конфигурационном файле параметры настройки SAML-приложения:

     ```hcl
     resource "yandex_organizationmanager_idp_application_saml_application" "saml_app" {
       organization_id = "<идентификатор_организации>"
       name            = "<имя_приложения>"

       service_provider = {
         entity_id = "<идентификатор_поставщика_услуг>"
         acs_urls  = [
           {
             url = "URL"
           }
         ]
         security_settings = {
           signature_mode = "RESPONSE_AND_ASSERTIONS"
         }
       }
     }
     ```

     Где:

     * `organization_id` — [идентификатор организации](../organization-get-id.md), в которой нужно создать SAML-приложение. Обязательный параметр.
     * `entity_id` — уникальный идентификатор поставщика услуг (Service Provider). Значение должно совпадать на стороне поставщика услуг и на стороне Yandex Identity Hub.
     * `acs_urls` — список URL-адресов, на которые Yandex Identity Hub будет отправлять SAML-ответ. ACS URL должен соответствовать схеме `https`. Использовать протокол без шифрования допускается только в целях тестирования на локальном хосте (значения `http://127.0.0.1` и `http://localhost`).
     * `signature_mode` — элементы SAML-ответа, которые будут подписываться электронной подписью. Возможные значения:
       * `ASSERTION_ONLY` — только передаваемые атрибуты пользователя;
       * `RESPONSE_ONLY` — весь SAML-ответ целиком;
       * `RESPONSE_AND_ASSERTION` — целиком весь SAML-ответ и (отдельно) передаваемые атрибуты.

     Подробнее о параметрах ресурса `yandex_organizationmanager_idp_application_saml_application` читайте в [документации провайдера](../../../terraform/resources/organizationmanager_idp_application_saml_application.md).

  1. Примените изменения:

     1. В терминале перейдите в директорию с конфигурационным файлом.
     1. Проверьте корректность конфигурации с помощью команды:
     
        ```bash
        terraform validate
        ```
     
        Если конфигурация является корректной, появится сообщение:
     
        ```bash
        Success! The configuration is valid.
        ```
     
     1. Выполните команду:
     
        ```bash
        terraform plan
        ```
     
        В терминале будет выведен список ресурсов с параметрами. На этом этапе изменения не будут внесены. Если в конфигурации есть ошибки, Terraform на них укажет.
     1. Примените изменения конфигурации:
     
        ```bash
        terraform apply
        ```
     
     1. Подтвердите изменения: введите в терминале слово `yes` и нажмите **Enter**.

     Проверить изменения ресурсов и их настройки можно в [интерфейсе Cloud Center](https://kz.center.yandex.cloud/organization).

- API {#api}

  Воспользуйтесь методом REST API [Application.Update](../../idp/application/saml/api-ref/Application/update.md) для ресурса [Application](../../idp/application/saml/api-ref/Application/index.md) или вызовом gRPC API [ApplicationService/Update](../../idp/application/saml/api-ref/grpc/Application/update.md).

{% endlist %}

### Настройте атрибуты пользователей и групп {#setup-attributes}

Вы можете настроить атрибуты, которые будут передаваться из Yandex Identity Hub поставщику услуг:

{% list tabs group=instructions %}

- Интерфейс Cloud Center {#cloud-center}

  1. Войдите в сервис [Yandex Identity Hub](https://kz.center.yandex.cloud/organization).
  1. На панели слева выберите ![shapes-4](../../../_assets/console-icons/shapes-4.svg) **Приложения** и выберите нужное приложение.
  1. Перейдите на вкладку **Атрибуты**.
  1. Чтобы добавить атрибут групп пользователей, в правом верхнем углу страницы нажмите кнопку ![circles-3-plus](../../../_assets/console-icons/circles-3-plus.svg) **Добавить атрибут группы** и в открывшемся окне:

      1. В поле **Имя атрибута** задайте имя атрибута групп пользователей. Имя атрибута должно быть уникальным для вашего приложения.
      1. В поле **Передаваемые группы** выберите одно из значений:

          * `Все группы` — в SAML-ответе в значение данного поля будут включены все [группы](../../concepts/groups.md), в которые входит пользователь.
          
              Максимальное количество передаваемых в этом поле групп — 1&nbsp;000. Если количество групп, в которые входит пользователь, превышает это число, на сторону поставщика услуг будет передана только первая тысяча групп. 
          * `Только назначенные группы` — в SAML-ответе в значение данного поля из всех групп, в которые входит пользователь, будут включены только те группы, которые явно заданы на вкладке **Пользователи и группы** SAML-приложения.

      1. Нажмите кнопку **Добавить**.
  1. Чтобы добавить дополнительные атрибуты пользователей, в правом верхнем углу страницы нажмите кнопку ![plus](../../../_assets/console-icons/plus.svg) **Добавить атрибут** и в открывшемся окне:

      1. В поле **Имя атрибута** задайте имя атрибута, уникальное для вашего приложения.
      1. В поле **Значение** выберите одно из значений:

          * `SubjectClaims.sub` — [идентификатор](../users-get.md) пользователя. Значение поля соответствует значению, отображаемому в поле **Идентификатор** в списке пользователей организации в интерфейсе Yandex Identity Hub в Cloud Center. Например: `aje0fapf84ofj57q1r0b`.
          * `SubjectClaims.preferred_username` — уникальный логин пользователя. Значение поля соответствует значению, отображаемому в поле **Имя пользователя** в списке пользователей организации в интерфейсе Yandex Identity Hub в Cloud Center. Например: `ivanov@example-federation.ru`.
          * `SubjectClaims.name` — полное имя пользователя. Значение поля соответствует значению, отображаемому в поле **Пользователь** в списке пользователей организации в интерфейсе Yandex Identity Hub в Cloud Center. Например: `Иванов Иван`.
          * `SubjectClaims.given_name` — имя. Значение поля соответствует значению, отображаемому в поле **Имя** в разделе **Персональная информация** на странице с информацией о пользователе в интерфейсе Yandex Identity Hub в Cloud Center. Например: `Иван`.
          * `SubjectClaims.family_name` — фамилия. Значение поля соответствует значению, отображаемому в поле **Фамилия** в разделе **Персональная информация** на странице с информацией о пользователе в интерфейсе Yandex Identity Hub в Cloud Center. Например: `Иванов`.
          * `SubjectClaims.email` — адрес электронной почты. Значение поля соответствует значению, отображаемому в поле **Электронная почта** на странице с информацией о пользователе в интерфейсе Yandex Identity Hub в Cloud Center. Например: `ivanov@example-company.ru`.
          * `SubjectClaims.phone_number` — номер телефона. Значение поля соответствует значению, отображаемому в поле **Номер телефона** в разделе **Персональная информация** на странице с информацией о пользователе в интерфейсе Yandex Identity Hub в Cloud Center. Например: `+74951234567`.
          * `SubjectClaims.company_name` — название компании. Значение поля соответствует значению, отображаемому в поле **Название компании** в разделе **Персональная информация** на странице с информацией о пользователе в интерфейсе Yandex Identity Hub в Cloud Center. Например: `ООО «Праздник»`.
          * `SubjectClaims.department` — название подразделения. Значение поля соответствует значению, отображаемому в поле **Подразделение** в разделе **Персональная информация** на странице с информацией о пользователе в интерфейсе Yandex Identity Hub в Cloud Center. Например: `Отдел АСУ`.
          * `SubjectClaims.job_title` — название должности. Значение поля соответствует значению, отображаемому в поле **Должность** в разделе **Персональная информация** на странице с информацией о пользователе в интерфейсе Yandex Identity Hub в Cloud Center. Например: `Разработчик`.
          * `SubjectClaims.employee_id` — цифровой код пользователя из кадровой системы компании. Значение поля соответствует значению, отображаемому в поле **Табельный номер** в разделе **Персональная информация** на странице с информацией о пользователе в интерфейсе Yandex Identity Hub в Cloud Center. Например: `08012`.
          
          {% note info %}
          
          Любое из этих значений атрибутов вы можете добавлять более одного раза под разными именами.
          
          {% endnote %}

      1. Нажмите кнопку **Добавить**.
  1. Чтобы изменить имеющийся атрибут, нажмите на строку с нужным атрибутом и в открывшемся окне:
  
      1. Измените имя и/или значение атрибута.

          Для атрибута `NameID`, в котором передается идентификатор пользователя, можно изменить формат и значение. Список доступных значений в поле **Значение** зависит от выбранного формата. При изменении формата значение атрибута изменяется автоматически на значение по умолчанию для этого формата.
          
          Возможные форматы и значения атрибута:
          
          * `urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress` — идентификатор пользователя передается в формате адреса электронной почты. Доступные значения:
              * `SubjectClaims.preferred_username` — значение по умолчанию при переключении на этот формат.
          
                  Уникальность и неизменяемость передаваемого идентификатора не гарантируется: в одной организации могут быть два пользователя с одинаковым идентификатором `preferred_username`. Например: [федеративный](../../../iam/concepts/users/accounts.md#saml-federation) пользователь и [локальный](../../../iam/concepts/users/accounts.md#local) пользователь могут иметь одинаковое значение этого атрибута.
          
                  Если идентификатор `preferred_username` федеративного пользователя задан не в формате адреса электронной почты, к передаваемому идентификатору будет автоматически добавлен суффикс `@<идентификатор_федерации_удостоверений>`, чтобы привести его к такому формату.
              * `SubjectClaims.email` — адрес электронной почты пользователя.
          
          * `urn:oasis:names:tc:SAML:2.0:nameid-format:persistent` — идентификатор пользователя передается в формате [идентификатора](../users-get.md) пользователя [организации](../../concepts/organization.md). При этом передаваемое значение гарантированно уникальное и неизменяемое. Доступные значения:
              * `SubjectClaims.sub` — значение по умолчанию при переключении на этот формат.
              * `SubjectClaims.external_id` — внешний идентификатор пользователя.
              * `SubjectClaims.employee_id` — табельный номер сотрудника.
          * `urn:oasis:names:tc:SAML:2.0:nameid-format:transient` — идентификатор пользователя передается в значении идентификатора текущей [сессии](../../concepts/sessions.md) пользователя. Значение этого идентификатора изменяется в зависимости от используемой сессии и не может применяться для однозначной идентификации пользователя.
          
              Формат `urn:oasis:names:tc:SAML:2.0:nameid-format:transient` нельзя задать в настройках атрибута `NameID` явно: идентификатор пользователя в этом формате передается в SAML-ответе только в том случае, если этот формат был явно запрошен в SAML-запросе.
          
          {% note warning %}
          
          Если SAML-запрос со стороны поставщика услуг содержит явное указание формата, в котором ожидается значение идентификатора пользователя `NameID`, то в SAML-ответе значение будет отправлено в том формате, который указан в SAML-запросе. При этом значение формата, заданное в настройках Yandex Identity Hub, будет проигнорировано.
          
          {% endnote %}
      
      1. Нажмите кнопку **Обновить**.
  1. Чтобы удалить имеющийся атрибут пользователя или группы, в строке с этим атрибутом нажмите значок ![ellipsis](../../../_assets/console-icons/ellipsis.svg) и выберите ![trash-bin](../../../_assets/console-icons/trash-bin.svg) **Удалить**, после чего подтвердите удаление.

      {% note info %}

      Удалять можно любые атрибуты, кроме обязательного атрибута `NameID`.

      {% endnote %}

- CLI {#cli}

  Если у вас еще нет интерфейса командной строки Yandex Cloud (CLI), [установите и инициализируйте его](../../../cli/quickstart.md#install).

  По умолчанию используется каталог, указанный при [создании](../../../cli/operations/profile/profile-create.md) профиля CLI. Чтобы изменить каталог по умолчанию, используйте команду `yc config set folder-id <идентификатор_каталога>`. Также для любой команды вы можете указать другой каталог с помощью параметров `--folder-name` или `--folder-id`. Если вы обращаетесь к ресурсу по имени, поиск будет выполнен в каталоге по умолчанию. Если вы обращаетесь к ресурсу по идентификатору, поиск будет выполнен глобально — во всех каталогах с учетом прав доступа.

  1. Посмотрите описание команды CLI для добавления атрибута:

     ```bash
     yc organization-manager idp application saml attribute create --help
     ```

  1. Чтобы добавить атрибут пользователя, выполните команду:

     ```bash
     yc organization-manager idp application saml attribute create \
       --application-id <идентификатор_приложения> \
       --name <имя_атрибута> \
       --value <значение_атрибута>
     ```

     Где:

     * `--application-id` — идентификатор SAML-приложения.
     * `--name` — имя атрибута, уникальное для вашего приложения.
     * `--value` — значение атрибута. Возможные значения:

       * `SubjectClaims.sub` — [идентификатор](../users-get.md) пользователя. Значение поля соответствует значению, отображаемому в поле **Идентификатор** в списке пользователей организации в интерфейсе Yandex Identity Hub в Cloud Center. Например: `aje0fapf84ofj57q1r0b`.
       * `SubjectClaims.preferred_username` — уникальный логин пользователя. Значение поля соответствует значению, отображаемому в поле **Имя пользователя** в списке пользователей организации в интерфейсе Yandex Identity Hub в Cloud Center. Например: `ivanov@example-federation.ru`.
       * `SubjectClaims.name` — полное имя пользователя. Значение поля соответствует значению, отображаемому в поле **Пользователь** в списке пользователей организации в интерфейсе Yandex Identity Hub в Cloud Center. Например: `Иванов Иван`.
       * `SubjectClaims.given_name` — имя. Значение поля соответствует значению, отображаемому в поле **Имя** в разделе **Персональная информация** на странице с информацией о пользователе в интерфейсе Yandex Identity Hub в Cloud Center. Например: `Иван`.
       * `SubjectClaims.family_name` — фамилия. Значение поля соответствует значению, отображаемому в поле **Фамилия** в разделе **Персональная информация** на странице с информацией о пользователе в интерфейсе Yandex Identity Hub в Cloud Center. Например: `Иванов`.
       * `SubjectClaims.email` — адрес электронной почты. Значение поля соответствует значению, отображаемому в поле **Электронная почта** на странице с информацией о пользователе в интерфейсе Yandex Identity Hub в Cloud Center. Например: `ivanov@example-company.ru`.
       * `SubjectClaims.phone_number` — номер телефона. Значение поля соответствует значению, отображаемому в поле **Номер телефона** в разделе **Персональная информация** на странице с информацией о пользователе в интерфейсе Yandex Identity Hub в Cloud Center. Например: `+74951234567`.
       * `SubjectClaims.company_name` — название компании. Значение поля соответствует значению, отображаемому в поле **Название компании** в разделе **Персональная информация** на странице с информацией о пользователе в интерфейсе Yandex Identity Hub в Cloud Center. Например: `ООО «Праздник»`.
       * `SubjectClaims.department` — название подразделения. Значение поля соответствует значению, отображаемому в поле **Подразделение** в разделе **Персональная информация** на странице с информацией о пользователе в интерфейсе Yandex Identity Hub в Cloud Center. Например: `Отдел АСУ`.
       * `SubjectClaims.job_title` — название должности. Значение поля соответствует значению, отображаемому в поле **Должность** в разделе **Персональная информация** на странице с информацией о пользователе в интерфейсе Yandex Identity Hub в Cloud Center. Например: `Разработчик`.
       * `SubjectClaims.employee_id` — цифровой код пользователя из кадровой системы компании. Значение поля соответствует значению, отображаемому в поле **Табельный номер** в разделе **Персональная информация** на странице с информацией о пользователе в интерфейсе Yandex Identity Hub в Cloud Center. Например: `08012`.
       
       {% note info %}
       
       Любое из этих значений атрибутов вы можете добавлять более одного раза под разными именами.
       
       {% endnote %}

  1. Чтобы добавить атрибут групп пользователей, выполните команду:

     ```bash
     yc organization-manager idp application saml attribute create \
       --application-id <идентификатор_приложения> \
       --name <имя_атрибута_групп> \
       --value <значение_атрибута_групп>
     ```

     Где:

     * `--name` — имя атрибута групп пользователей. Имя атрибута должно быть уникальным для вашего приложения.
     * `--value` — значение атрибута групп. Возможные значения:

       * `Все группы` — в SAML-ответе в значение данного поля будут включены все [группы](../../concepts/groups.md), в которые входит пользователь.
       
           Максимальное количество передаваемых в этом поле групп — 1&nbsp;000. Если количество групп, в которые входит пользователь, превышает это число, на сторону поставщика услуг будет передана только первая тысяча групп. 
       * `Только назначенные группы` — в SAML-ответе в значение данного поля из всех групп, в которые входит пользователь, будут включены только те группы, которые явно заданы на вкладке **Пользователи и группы** SAML-приложения.

  1. Чтобы изменить атрибут, выполните команду:

     ```bash
     yc organization-manager idp application saml attribute update \
       --id <идентификатор_атрибута> \
       --name <новое_имя_атрибута> \
       --value <новое_значение_атрибута>
     ```

  1. Чтобы удалить атрибут, выполните команду:

     ```bash
     yc organization-manager idp application saml attribute delete <идентификатор_атрибута>
     ```

- Terraform {#tf}

  Если у вас еще нет Terraform, [установите его и настройте провайдер Yandex Cloud](../../../tutorials/infrastructure-management/terraform-quickstart.md#install-terraform).
  
  
  Чтобы управлять инфраструктурой с помощью Terraform от имени сервисного аккаунта или пользовательских аккаунтов: аккаунта на Яндексе, федеративного аккаунта и локального пользователя, [аутентифицируйтесь](../../../terraform/authentication.md) соответствующим способом.

  1. Опишите в конфигурационном файле атрибуты SAML-приложения:

     ```hcl
     resource "yandex_organizationmanager_idp_application_saml_application" "saml_app" {
       organization_id = "<идентификатор_организации>"
       name            = "<имя_приложения>"

       attribute_mapping = {
         name_id  = {
           format = "EMAIL"
         }

         attributes = [{
           name  = "email"
           value = "SubjectClaims.email"
         }, {
           name  = "firstName"
           value = "SubjectClaims.given_name"
         }, {
           name  = "lastName"
           value = "SubjectClaims.family_name"
         }]
       }

       group_claims_settings = {
         group_attribute_name    = "<имя_атрибута_групп>"
         group_distribution_type = "ALL_GROUPS"
       }
     }
     ```

     Где:

     * `organization_id` — [идентификатор организации](../organization-get-id.md), в которой нужно создать SAML-приложение. Обязательный параметр.
     * `name` — имя SAML-приложения. Обязательный параметр.
     * `attributes` — список атрибутов, которые будут передаваться из Yandex Identity Hub поставщику услуг. Каждый атрибут содержит:
       * `name` — имя атрибута, уникальное для вашего приложения.
       * `value` — значение атрибута. Возможные значения:

         * `SubjectClaims.sub` — [идентификатор](../users-get.md) пользователя. Значение поля соответствует значению, отображаемому в поле **Идентификатор** в списке пользователей организации в интерфейсе Yandex Identity Hub в Cloud Center. Например: `aje0fapf84ofj57q1r0b`.
         * `SubjectClaims.preferred_username` — уникальный логин пользователя. Значение поля соответствует значению, отображаемому в поле **Имя пользователя** в списке пользователей организации в интерфейсе Yandex Identity Hub в Cloud Center. Например: `ivanov@example-federation.ru`.
         * `SubjectClaims.name` — полное имя пользователя. Значение поля соответствует значению, отображаемому в поле **Пользователь** в списке пользователей организации в интерфейсе Yandex Identity Hub в Cloud Center. Например: `Иванов Иван`.
         * `SubjectClaims.given_name` — имя. Значение поля соответствует значению, отображаемому в поле **Имя** в разделе **Персональная информация** на странице с информацией о пользователе в интерфейсе Yandex Identity Hub в Cloud Center. Например: `Иван`.
         * `SubjectClaims.family_name` — фамилия. Значение поля соответствует значению, отображаемому в поле **Фамилия** в разделе **Персональная информация** на странице с информацией о пользователе в интерфейсе Yandex Identity Hub в Cloud Center. Например: `Иванов`.
         * `SubjectClaims.email` — адрес электронной почты. Значение поля соответствует значению, отображаемому в поле **Электронная почта** на странице с информацией о пользователе в интерфейсе Yandex Identity Hub в Cloud Center. Например: `ivanov@example-company.ru`.
         * `SubjectClaims.phone_number` — номер телефона. Значение поля соответствует значению, отображаемому в поле **Номер телефона** в разделе **Персональная информация** на странице с информацией о пользователе в интерфейсе Yandex Identity Hub в Cloud Center. Например: `+74951234567`.
         * `SubjectClaims.company_name` — название компании. Значение поля соответствует значению, отображаемому в поле **Название компании** в разделе **Персональная информация** на странице с информацией о пользователе в интерфейсе Yandex Identity Hub в Cloud Center. Например: `ООО «Праздник»`.
         * `SubjectClaims.department` — название подразделения. Значение поля соответствует значению, отображаемому в поле **Подразделение** в разделе **Персональная информация** на странице с информацией о пользователе в интерфейсе Yandex Identity Hub в Cloud Center. Например: `Отдел АСУ`.
         * `SubjectClaims.job_title` — название должности. Значение поля соответствует значению, отображаемому в поле **Должность** в разделе **Персональная информация** на странице с информацией о пользователе в интерфейсе Yandex Identity Hub в Cloud Center. Например: `Разработчик`.
         * `SubjectClaims.employee_id` — цифровой код пользователя из кадровой системы компании. Значение поля соответствует значению, отображаемому в поле **Табельный номер** в разделе **Персональная информация** на странице с информацией о пользователе в интерфейсе Yandex Identity Hub в Cloud Center. Например: `08012`.
         
         {% note info %}
         
         Любое из этих значений атрибутов вы можете добавлять более одного раза под разными именами.
         
         {% endnote %}

     * `group_claims_settings` — параметры атрибутов групп пользователей:
       * `group_attribute_name` — имя атрибута групп пользователей. Имя атрибута должно быть уникальным для вашего приложения.
       * `group_distribution_type` — значение атрибута групп. Возможные значения: 
         * `ASSIGNED_GROUPS` — в SAML-ответе в значение данного поля из всех групп, в которые входит пользователь, будут включены только те группы, которые явно заданы на вкладке **Пользователи и группы** SAML-приложения.
         * `ALL_GROUPS` — в SAML-ответе в значение данного поля будут включены все [группы](../../concepts/groups.md), в которые входит пользователь.

             Максимальное количество передаваемых в этом поле групп — 1&nbsp;000. Если количество групп, в которые входит пользователь, превышает это число, на сторону поставщика услуг будет передана только первая тысяча групп. 

     Подробнее о параметрах ресурса `yandex_organizationmanager_idp_application_saml_application` читайте в [документации провайдера](../../../terraform/resources/organizationmanager_idp_application_saml_application.md).

  1. Примените изменения:

     1. В терминале перейдите в директорию с конфигурационным файлом.
     1. Проверьте корректность конфигурации с помощью команды:
     
        ```bash
        terraform validate
        ```
     
        Если конфигурация является корректной, появится сообщение:
     
        ```bash
        Success! The configuration is valid.
        ```
     
     1. Выполните команду:
     
        ```bash
        terraform plan
        ```
     
        В терминале будет выведен список ресурсов с параметрами. На этом этапе изменения не будут внесены. Если в конфигурации есть ошибки, Terraform на них укажет.
     1. Примените изменения конфигурации:
     
        ```bash
        terraform apply
        ```
     
     1. Подтвердите изменения: введите в терминале слово `yes` и нажмите **Enter**.

     Проверить изменения ресурсов и их настройки можно в [интерфейсе Cloud Center](https://kz.center.yandex.cloud/organization).

- API {#api}

  Воспользуйтесь методом REST API [Application.Update](../../idp/application/saml/api-ref/Application/update.md) для ресурса [Application](../../idp/application/saml/api-ref/Application/index.md) или вызовом gRPC API [ApplicationService/Update](../../idp/application/saml/api-ref/grpc/Application/update.md).

{% endlist %}

Убедитесь, что добавленные атрибуты также добавлены в настройки интеграции SAML-приложения на стороне поставщика услуг и корректно обрабатываются им.

### Настройте пользователей и группы {#users-and-groups}

Чтобы пользователи вашей организации могли аутентифицироваться во внешнем приложении с помощью SAML-приложения Yandex Identity Hub, необходимо явно добавить в SAML-приложение нужных пользователей и/или [группы пользователей](../../concepts/groups.md):

{% note info %}

Управлять пользователями и группами, добавленными в SAML-приложение, может пользователь, которому назначена [роль](../../security/index.md#organization-manager-samlApplications-userAdmin) `organization-manager.samlApplications.userAdmin` или выше.

{% endnote %}

{% list tabs group=instructions %}

- Интерфейс Cloud Center {#cloud-center}

  1. Войдите в сервис [Yandex Identity Hub](https://kz.center.yandex.cloud/organization).
  1. На панели слева выберите ![shapes-4](../../../_assets/console-icons/shapes-4.svg) **Приложения** и выберите нужное приложение.
  1. Перейдите на вкладку **Пользователи и группы**.
  1. Чтобы добавить в SAML-приложение пользователя или группу пользователей:

      1. Нажмите кнопку ![person-plus](../../../_assets/console-icons/person-plus.svg) **Добавить пользователей**.
      1. В открывшемся окне выберите нужного пользователя или группу пользователей.
      1. Нажмите кнопку **Добавить**.
  1. Чтобы удалить пользователя или группу пользователей из SAML-приложения:

      1. В списке пользователей и групп в строке с нужным пользователем или группой нажмите значок ![ellipsis](../../../_assets/console-icons/ellipsis.svg) и выберите ![trash-bin](../../../_assets/console-icons/trash-bin.svg) **Удалить**.
      1. Подтвердите удаление.

- CLI {#cli}

  Если у вас еще нет интерфейса командной строки Yandex Cloud (CLI), [установите и инициализируйте его](../../../cli/quickstart.md#install).

  По умолчанию используется каталог, указанный при [создании](../../../cli/operations/profile/profile-create.md) профиля CLI. Чтобы изменить каталог по умолчанию, используйте команду `yc config set folder-id <идентификатор_каталога>`. Также для любой команды вы можете указать другой каталог с помощью параметров `--folder-name` или `--folder-id`. Если вы обращаетесь к ресурсу по имени, поиск будет выполнен в каталоге по умолчанию. Если вы обращаетесь к ресурсу по идентификатору, поиск будет выполнен глобально — во всех каталогах с учетом прав доступа.

  1. Получите [идентификатор пользователя](../users-get.md) или [группы пользователей](../group-get-id.md).

  1. Чтобы добавить в приложение пользователя или группу пользователей:
   
     1. Посмотрите описание команды CLI для добавления пользователей в приложение:
   
        ```bash
        yc organization-manager idp application saml application add-assignments --help
        ```
   
     1. Выполните команду:
   
        ```bash
        yc organization-manager idp application saml application add-assignments \
          --id <идентификатор_приложения> \
          --subject-id <идентификатор_пользователя_или_группы>
        ```
   
        Где:
   
        * `--id` — идентификатор приложения.
        * `--subject-id` — идентификатор нужного пользователя или группы пользователей.
   
        Результат:
   
        ```text
        assignment_deltas:
          - action: ADD
            assignment:
              subject_id: ajetvnq2mil8********
        ```

  1. Чтобы удалить пользователя или группу пользователей из приложения:

     1. Посмотрите описание команды CLI для удаления пользователей из приложения:
   
        ```bash
        yc organization-manager idp application saml application remove-assignments --help
        ```
   
     1. Выполните команду:
   
        ```bash
        yc organization-manager idp application saml application remove-assignments \
          --id <идентификатор_приложения> \
          --subject-id <идентификатор_пользователя_или_группы>
        ```
   
        Где:
   
        * `--id` — идентификатор SAML-приложения.
        * `--subject-id` — идентификатор нужного пользователя или группы пользователей.
   
        Результат:
   
        ```text
        assignment_deltas:
          - action: REMOVE
            assignment:
              subject_id: ajetvnq2mil8********
        ```

- Terraform {#tf}

  Если у вас еще нет Terraform, [установите его и настройте провайдер Yandex Cloud](../../../tutorials/infrastructure-management/terraform-quickstart.md#install-terraform).
  
  
  Чтобы управлять инфраструктурой с помощью Terraform от имени сервисного аккаунта или пользовательских аккаунтов: аккаунта на Яндексе, федеративного аккаунта и локального пользователя, [аутентифицируйтесь](../../../terraform/authentication.md) соответствующим способом.

  1. Опишите в конфигурационном файле параметры SAML-приложения с пользователями и группами:

     ```hcl
     resource "yandex_organizationmanager_idp_application_saml_application_assignment" "example_assignment" {
       application_id = "<идентификатор_SAML-приложения>"
       subject_id     = "<идентификатор_пользователя_или_группы>"
     }
     ```

     Где:

     * `application_id` — идентификатор SAML-приложения.
     * `subject_id` — идентификатор пользователя или группы пользователей, которые будут иметь доступ к SAML-приложению. Чтобы получить идентификатор пользователя, воспользуйтесь [инструкцией](../users-get.md). Чтобы получить идентификатор группы пользователей, воспользуйтесь [инструкцией](../group-get-id.md).

     Подробнее о параметрах ресурса `yandex_organizationmanager_idp_application_saml_application_assignment` читайте в [документации провайдера](../../../terraform/resources/organizationmanager_idp_application_saml_application_assignment.md).

  1. Примените изменения:

     1. В терминале перейдите в директорию с конфигурационным файлом.
     1. Проверьте корректность конфигурации с помощью команды:
     
        ```bash
        terraform validate
        ```
     
        Если конфигурация является корректной, появится сообщение:
     
        ```bash
        Success! The configuration is valid.
        ```
     
     1. Выполните команду:
     
        ```bash
        terraform plan
        ```
     
        В терминале будет выведен список ресурсов с параметрами. На этом этапе изменения не будут внесены. Если в конфигурации есть ошибки, Terraform на них укажет.
     1. Примените изменения конфигурации:
     
        ```bash
        terraform apply
        ```
     
     1. Подтвердите изменения: введите в терминале слово `yes` и нажмите **Enter**.

     Проверить изменения ресурсов и их настройки можно в [интерфейсе Cloud Center](https://kz.center.yandex.cloud/organization).

- API {#api}

  Воспользуйтесь методом REST API [Application.UpdateAssignments](../../idp/application/saml/api-ref/Application/updateAssignments.md) для ресурса [Application](../../idp/application/saml/api-ref/Application/index.md) или вызовом gRPC API [ApplicationService/UpdateAssignments](../../idp/application/saml/api-ref/grpc/Application/updateAssignments.md).

{% endlist %}

{% note tip %}

Если вы хотите более тонко настроить аутентификацию пользователей в приложениях, в том числе разрешить аутентификацию только с определенных IP-адресов, используйте [политики аутентификации](*authentication_policies).

{% endnote %}

[*authentication_policies]: Политики аутентификации — это инструмент Yandex Identity Hub, позволяющий гибко настраивать доступ к приложениям, запрещая или разрешая аутентификацию определенным пользователям в определенных приложениях и/или с определенных IP-адресов. Подробнее читайте в разделе [Политики аутентификации в Yandex Identity Hub](../../concepts/authentication-policy.md).

## Убедитесь в корректной работе приложения {#validate}

Чтобы убедиться в корректной работе SAML-приложения и интеграции с поставщиком услуг, выполните аутентификацию во внешнем приложении от имени одного из добавленных в приложение пользователей.

#### Полезные ссылки {#see-also}

* [Изменить SAML-приложение в Yandex Identity Hub](saml-update.md)
* [Деактивировать и удалить SAML-приложение в Yandex Identity Hub](saml-deactivate-remove.md)
* [Добавить пользователя](../add-account.md)
* [SAML-приложения](../../concepts/applications/saml.md)
* [Управление группами пользователей](../manage-groups.md)