[Документация Yandex Cloud](../../index.md) > [Yandex Managed Service for GitLab](../index.md) > [Пошаговые инструкции](index.md) > Настройка OmniAuth

# Настройка OmniAuth

С помощью [OmniAuth](https://rubygems.org/gems/omniauth/) пользователи могут авторизоваться в GitLab, используя учетные данные других сервисов.

Чтобы интегрировать провайдер аутентификации для GitLab через OmniAuth, [добавьте провайдер аутентификации](#add-provider), в процессе указав его [параметры](#params).

## Добавление провайдера аутентификации {#add-provider}

1. Перейдите в сервис **Managed Service for&nbsp;GitLab**.
1. Нажмите на имя нужного инстанса и выберите вкладку **OmniAuth**.
1. Нажмите кнопку **Настроить**.
1. Чтобы добавить провайдера аутентификации, нажмите кнопку **Add**.
1. Выберите тип и укажите [параметры провайдера аутентификации](#params).
1. Нажмите кнопку **Создать**.

Подробнее о работе OmniAuth в GitLab в [документации GitLab](https://docs.gitlab.com/ee/integration/omniauth.html).

## Параметры провайдера аутентификации {#params}

Часть параметров являются общими для всех провайдеров:

* **Allow single sign on** — разрешить использование SSO. Если установлено значение `true`, то при аутентификации незарегистрированного в GitLab пользователя через провайдер OmniAuth для него будет автоматически создана учетная запись в GitLab.
* **Auto link users by email** — установить соответствие между именем пользователя в OmniAuth и в GitLab, если к ним привязан один адрес электронной почты.
* **Block auto-created users** — переводить автоматически созданные учетные записи в состояние [Pending approval](https://docs.gitlab.com/ee/administration/moderate_users.html#users-pending-approval) до их одобрения администратором.
* **External provider** — установить для провайдера свойство _внешний_. Пользователи, авторизованные через данный провайдер, будут считаться [внешними](https://docs.gitlab.com/ee/user/admin_area/external_users.html) и не будут иметь доступа к [внутренним проектам](https://docs.gitlab.com/ee/user/public_access.html#internal-projects-and-groups).
* **Auto link LDAP user** — создавать LDAP-сущность для автоматически созданных учетных записей. Применимо только для инстансов, к которым подключен LDAP-провайдер.

Остальные параметры зависят от выбранного типа провайдера.

### Bitbucket Cloud {#bitbucket}

* **Label** — название провайдера аутентификации. Может быть любым.
* **Application ID** — идентификатор приложения, полученный при настройке провайдера.
* **Application Secret** — секретный ключ, полученный при настройке провайдера.

Как получить идентификатор и секретный ключ приложения, описано в [инструкции по настройке провайдера](https://docs.gitlab.com/ee/integration/bitbucket.html#bitbucket-omniauth-provider).

### Github Enterprise {#gitlab-ee}

* **Label** — название провайдера аутентификации. Может быть любым.
* **Application ID** — идентификатор приложения, полученный при настройке провайдера.
* **Application Secret** — секретный ключ, полученный при настройке провайдера.
* **URL** — ссылка на репозиторий в GitHub.

Как получить идентификатор и секретный ключ приложения, описано в [инструкции по настройке провайдера](https://docs.gitlab.com/ee/integration/github.html).

### GitLab self-managed {#gitlab-self}

* **Label** — название провайдера аутентификации. Может быть любым.
* **Application ID** — идентификатор приложения, полученный при настройке провайдера.
* **Application Secret** — секретный ключ, полученный при настройке провайдера.
* **Site** — ссылка на репозиторий в GitLab.

Как получить идентификатор и секретный ключ приложения, описано в [инструкции по настройке провайдера](https://docs.gitlab.com/ee/integration/gitlab.html).

### Google OAuth 2.0 {#google}

* **Label** — название провайдера аутентификации. Может быть любым.
* **Application ID** — идентификатор приложения, полученный при настройке провайдера.
* **Application Secret** — секретный ключ, полученный при настройке провайдера.

Как получить идентификатор и секретный ключ приложения, описано в [инструкции по настройке провайдера](https://docs.gitlab.com/ee/integration/google.html#configure-the-google-cloud-resource-manager).

### Keycloak {#keycloak}

{% note info %}

Для работы с GitLab сервер Keycloak должен использовать протокол HTTPS.

{% endnote %}

* **Label** — название провайдера аутентификации. Может быть любым.
* **Issuer** — URL источника авторизации, например `https://keycloak.example.com/realms/myrealm`.
* **Client ID** — идентификатор клиента, полученный при настройке Keycloak.
* **Client Secret** — секретный ключ клиента, полученный при настройке Keycloak.
* **Site** — ссылка на репозиторий в GitLab.

### LDAP {#ldap}

{% note warning %}

Перед настройкой интеграции с LDAP убедитесь, что пользователи на LDAP-сервере не могут:

* Изменять атрибуты `mail`, `email` и `userPrincipalName`. Пользователи с такими привилегиями потенциально могут получить доступ к любой учетной записи на GitLab-сервере.
* Иметь общий адрес электронной почты. Пользователи LDAP с общим адресом электронной почты смогут использовать один аккаунт в GitLab.

{% endnote %}

* **Name** — отображаемое имя пользователя в LDAP. Не должно содержать пробелов и знаков препинания.
* **Label** — название LDAP-сервера. Может быть любым.
* **Host** — IP-адрес или доменное имя LDAP-сервера.
* **Port** — порт LDAP-сервера для подключения.
* **Username ID** — идентификатор пользователя в LDAP.
* **Encryption** — метод шифрования трафика.
* **Base** — имя LDAP-каталога, где хранятся учетные записи пользователей.
* **Bind DN** — (опционально) уникальное имя (DN) пользователя в LDAP.
* **User Filter** — (опционально) фильтр пользователей в LDAP в формате [RFC-4515](https://www.rfc-editor.org/rfc/rfc4515.html).

Как выполнить минимальные настройки LDAP-сервера для работы с GitLab, описано в [документации GitLab](https://docs.gitlab.com/ee/administration/auth/ldap/#configure-ldap).

### Microsoft Entra ID {#azure-ad}

* **Label** — название провайдера аутентификации. Может быть любым.
* **Client ID** — идентификатор клиента, полученный при регистрации приложения.
* **Client Secret** — секретный ключ клиента, полученный при регистрации приложения.
* **Tenant ID** — идентификатор тенанта, полученный при регистрации приложения.

Как зарегистрировать приложение на стороне Azure, описано в [документации GitLab](https://docs.gitlab.com/ee/integration/azure.html#register-an-azure-application).

### Microsoft Azure OAuth 2 {#azure-oauth}

* **Label** — название провайдера аутентификации. Может быть любым.
* **Client ID** — идентификатор клиента, полученный при регистрации приложения.
* **Client Secret** — секретный ключ клиента, полученный при регистрации приложения.
* **Tenant ID** — идентификатор тенанта, полученный при регистрации приложения.

Как зарегистрировать приложение на стороне Azure, описано в [документации GitLab](https://docs.gitlab.com/ee/integration/azure.html#register-an-azure-application).

### SAML {#saml}

* **Label** — название провайдера аутентификации. Может быть любым.
* **Assertion consumer service URL** — HTTPS-эндпоинт инстанса GitLab. Чтобы сформировать этот URL, добавьте `/users/auth/saml/callback` к адресу вашего инстанса GitLab, например `https://example.gitlab.yandexcloud.net/users/auth/saml/callback`.
* **IDP certificate fingerprint** — SHA1-отпечаток открытого ключа сертификата, например `90:CC:16:F0:8D:...`. Выдается при настройке провайдера идентификации.
* **IDP SSO target URL** — URL провайдера идентификации. Выдается при настройке провайдера идентификации.
* **Issuer** — уникальный идентификатор приложения, в котором будет происходить аутентификация пользователя, например `https://example.gitlab.yandexcloud.net`.
* **Name identifier format** — формат идентификатора имени. Выдается при настройке провайдера идентификации.

Как настроить SAML на стороне провайдера идентификации, описано в [документации GitLab](https://docs.gitlab.com/ee/integration/saml.html#configure-saml-on-your-idp).

### Yandex ID {#yandex-id}

* **Label** — название провайдера аутентификации. Может быть любым.
* **Client ID** — идентификатор клиента, полученный при регистрации приложения.
* **Client Secret** — секретный ключ клиента, полученный при регистрации приложения.
* **Site** — ссылка на репозиторий в GitLab.

Как зарегистрировать приложение на стороне провайдера идентификации, описано в [документации Яндекс.OAuth](https://yandex.ru/dev/id/doc/register-client). При регистрации приложения разрешите доступ к адресу электронной почты пользователя. Если в качестве платформы выбраны веб-сервисы, укажите в поле **Redirect URI** адрес URL вида:

```text
https://<адрес_инстанса_GitLab>/users/auth/Yandex/callback
```

Пример URL:

```text
https://my-domain.gitlab.yandexcloud.net/users/auth/Yandex/callback
```

{% note warning %}

При интеграции с сервисом Яндекс ID в ваш инстанс может войти любой пользователь с аккаунтом на Яндексе. Чтобы исключить доступ посторонних пользователей, [установите параметры](#params) **Allow single sign on** и **Block auto-created users** в значение **true**. Это позволит автоматически создавать в GitLab новых пользователей, но блокировать их при первом входе.

{% endnote %}

### Яндекс 360 {#yandex-360}

Яндекс 360 использует для аутентификации провайдеры [Yandex ID](#yandex-id) или [LDAP](#ldap). Чтобы пользователи Яндекс 360 могли войти в ваш инстанс GitLab, [добавьте](#add-provider) и настройте в OmniAuth один из этих провайдеров.

{% note warning %}

Если вы используете провайдер Yandex ID, при аутентификации не проверяется, что пользователь принадлежит организации в Яндекс 360. В ваш инстанс GitLab может войти любой пользователь с аккаунтом на Яндексе. Чтобы исключить доступ посторонних пользователей, [установите параметры](#params) **Allow single sign on** и **Block auto-created users** в значение **true**. Это позволит автоматически создавать в GitLab новых пользователей, но блокировать их при первом входе.

{% endnote %}