# Gitlab

**GitLab** (<https://gitlab.com>) — это веб-приложение для хранения и управления репозиториями программного кода для Git.

Подключение GitLab к Blitz Identity Provider выполняется по протоколу _OpenID Connect_ и состоит из двух этапов:

 * Этап 1. Настройки на стороне GitLab

 * Этап 2. Настройки на стороне Blitz Identity Provider

<div style="background-color: #fff3cd; border: 1px solid #ffc107; border-radius: 5px; padding: 10px;">
     <strong>Важно:</strong> <p>В инструкции для примера указано, что GitLab расположен на домене <code class="docutils literal notranslate"><span class="pre">https://gitlab.company.com</span></code>, а Blitz IDP установлен на домене <code class="docutils literal notranslate"><span class="pre">https://login.company.com</span></code>. Уточните ваши адреса перед применением инструкции.</p>
 </div>

 ### Этап 1. Настройки на стороне GitLab

Выполните следующие действия:

1. Откройте для редактирования конфигурационный файл Gitlab: ``gitlab.rb`` (например, _/etc/gitlab/gitlab.rb_). **Отредактируйте** блок *gitlab_rails['omniauth_providers']*:

 * **label** - укажите название *Сервиса аутентификации*, понятное пользователям. Название будет отображаться на кнопке страницы аутентификации. Например, ``Blitz``.
 * **name** - укажите название протокола ``openid_connect``.
 * **scopes** - укажите необходимые разрешения для получения данных. Например, стандартный scope ``profile``.
 * **response_type** - укажите тип ответа ``code``.
 * **issuer** - укажите URL поставщика аутентификации. Например, ``https://login.company.com/blitz``.
 * **discovery** - установите значение ``true`` для автоматического определения параметров клиента.
 * **client_auth_method** - укажите метод аутентификации клиента у поставщика. Например, ``basic``.
 * **uid_field** - укажите значение ``sub``.
 * **send_scope_to_token_endpoint** - укажите значение ``false``.
 * **identifier** - укажите уникальное название для идентификации приложения. Например, ``gitlab``.
 * **secret** - задайте секретный ключ для безопасной аутентификации приложения.
 * **redirect_uri** - укажите URL, на который пользователь будет перенаправлен после успешного входа в систему. Например, ``https://login.company.com/gitlab/users/auth/openid_connect/callback``.

```
{
    name: "openid_connect",
    label: "Blitz",
    args: {
      name: "openid_connect",
      scope: ["openid","profile"],
      response_type: "code",
      issuer: "https://login.company.com/blitz",
      discovery: true,
      client_auth_method: "basic",
      uid_field: "sub",
      send_scope_to_token_endpoint: "false",
      client_options: {
        identifier: "gitlab",
        secret: "eXa12m3PL45e",
        redirect_uri: "https://login.company.com/gitlab/users/auth/openid_connect/callback"
      }
    }
  }
```
2. **Сохраните** файл.

### Этап 2. Настройки на стороне Blitz Identity Provider

В консоли управления *Blitz Identity Provider* перейдите в раздел **Приложения** и выполните следующие действия:

1. **Создайте** новое приложение, задав его базовые настройки:

* **Идентификатор (entityID или client_id)**: аналогичный client_id, который был прописан в gitlab.rb.
* **Название**: имя приложения GitLab, которое будет отображаться на стороне Blitz IDP.
* **Домен**: ``https://gitlab.company.com``

<p align="center">
  <img src="https://docs.identityblitz.ru/kb/uploads/images/gallery/2024-09/git-1.png">
</p>

2. Нажмите **Сохранить**.

2. Далее нажмите кнопку **Параметры** <img width="25" height="25" src="https://docs.identityblitz.ru/kb/uploads/images/gallery/2024-08/scaled-1680-/button-1.png"> у предложения GitLab и отредактируйте параметры приложения:

* **Протоколы**: выберите ``OAuth 2.0`` и нажмите **Сконфигурировать**

*Далее в параметрах укажите данные, как в ``gitlab.rb``:*

* **Секрет (client_secret)**: аналогичный client_secret, который был прописан в gitlab.rb

* **Префиксы ссылок возврата**: ``https://gitlab.company.com``

* **Допустимые разрешения**: ``profile`` ``openid``

<p align="center">
  <img src="https://docs.identityblitz.ru/kb/uploads/images/gallery/2024-09/git-2.png">
</p>

4. Нажмите **Сохранить**.

<div style="background-color: #d0f0c0; border: 1px solid #28a745; border-radius: 5px; padding: 10px;">
<strong>Совет:</strong>
<p>После прохождения всех шагов рекомендуем проверить корректность входа в GitLab: <code class="docutils literal notranslate"><span class="pre">https://gitlab.company.com</span></code></p>
</div>