Начиная с версии 2.8.92, Semaphore поддерживает аутентификацию через OpenID. В этой статье мы рассмотрим, как настроить Ansible Semaphore для аутентификации пользователей через GitLab.

Настройка аутентификации через OpenID начинается с конфигурации самого провайдера — в нашем случае GitLab.

1. Создайте приложение в GitLab

Чтобы включить аутентификацию через GitLab, необходимо создать приложение в настройках вашей учётной записи GitLab.

  1. Перейдите в раздел Applications в настройках вашей учётной записи GitLab: https://gitlab.com/-/profile/applications
  2. Заполните обязательные поля:
    • Redirect URL: http://localhost:3000/api/auth/oidc/gitlab/redirect.
    • Scopes: openid, profile, email.

    gitlab app create

  3. После нажатия Save application вы увидите следующий экран:
  4. gitlab app config
  5. Скопируйте и сохраните где-нибудь секретный ключ (он понадобится для настройки Semaphore) и нажмите Continue.
  6. Приложение готово.
  7. gitlab app list

2. Добавьте настройки OpenID в файл конфигурации Semaphore

Как известно, настройки Semaphore хранятся в файле конфигурации (обычно config.json) в формате JSON.

Нужно добавить в него следующие настройки, чтобы Semaphore знал, как использовать GitLab в качестве провайдера OpenID:

"oidc_providers": {
   "gitlab": {
       "display_name": "GitLab",
       "provider_url": "https://gitlab.com",
       "client_id": "Application ID",
       "client_secret": "Secret",
       "redirect_url": "http://localhost:4000/api/auth/oidc/gitlab/redirect"
   }
}

3. Запустите Semaphore с аутентификацией через OpenID/GitLab

После сохранения изменений в файле конфигурации запустите или перезапустите Semaphore с новыми настройками.

На странице входа Semaphore появится новая кнопка «GitLab».

semaphore login screen