Перейти к содержанию

Настройка интеграций по протоколам

В Системе в разделе Сервисы необходимо добавить сервис для интеграции, указать наименование, протокол, параметры и адрес с которого будет производиться запрос на вход.

Подключение к Системе по протоколу CAS

Подключение redmine

Для подключения redmine необходимо установить модуль Redmine Omniauth plugin:

  • клонируем плагин в директорию /usr/src/redmine/plugins
    git clone https://github.com/jbbarth/redmine_omniauth_cas.git
    
  • копируем файл /usr/src/redmine/plugins/redmine_omniauth_cas/initializersredmine_omniauth_cas.rb в контейнер с redmine
    docker cp redmine_omniauth_cas.rb redmine:/usr/src/redmine/config/initializers/
    
  • перезапускаем redmine

В redmine, в настройках подключенного модуля (находятся в "Администрирование - Модули") в качестве "CAS server URL" указываем путь до контейнера sso, например, http://localhost:8082/auth.

В Системе в разделе Сервисы необходимо указать настройки:

  • В поле Тип идентификатора пользователя - Логин пользователя

Подключение jenkins

Для подключения jenkins необходимо установить плагин "cas-plugin". В jenkins в настройках плагина (находятся в "Глобальные настройки безопасности") необходимо заполнить:

  • "CAS server URL" указать путь до контейнера sso, например, http://localhost:8082/auth
  • "CAS Protocol" выбрать "CAS 3.0"
  • "Авторизация" - "Role-Based Strategy"

Далее в расширенных настройках заполнить:

  • "Roles Attribute(s)" - "memberOf"
  • "Full Name Attribute" - "displayName"
  • "Email Attribute" - "email"

Остальные параметры заполнять не нужно.

Подключение gitlab

Для подключения gitlab необходимо внести изменения в файл настроек gitlab.rb:

Информация

Не работает начиная с версии 16.0!

gitlab.rb
gitlab_rails['omniauth_providers'] = [
    {
        "name"=> "cas3",
        "label"=> "cas",
        "args"=> {
            "url"=> 'http://localhost:8082/auth',
            "login_url"=> '/cas/login',
            "service_validate_url"=> '/cas/p3/serviceValidate',
            "logout_url"=> '/cas/logout',
            "uid_field"=> 'cn'
        }
    }
  ]

Подключение к Системе по протоколу OpenId Connect

Подключение ownCloud

Для подключения ownCloud необходимо установить из маркета OpenID Connect. На стороне сервера owncloud настроить config.php, например:

config.php
  'http.cookie.samesite' => 'Lax',

  'openid-connect' => [
    // путь до протокола OIDC
    'provider-url' => 'http://localhost:8082/auth/oidc',
    //
    'client-id' => '...',
    'client-secret' => '...',
    'loginButtonName' => 'OpenId Connect',
    //'auto-provision' => ['enabled' => true] необходимо для автоматического создания пользователей, если не нужно поставьте ['enabled' => false]
    'auto-provision' => [
      'enabled' => true,
      'email-claim' => 'email',
      // обновляет информацию о пользователе
      'update' => [
        'enabled' => true,
      ],
    ],
    'search-attribute' => 'sub', // по умолчанию равно email
  ],

Более подробное описание настроек см. openidconnect

В Системе в разделе Сервисы необходимо указать настройки:

  • В поле Разрешенные типы предоставления токенов (grant types) - Authorization code

  • В поле Разрешенные типы ответов (response types) - code

  • В поле Атрибуты - profile и email

Подключение к Системе по протоколу SAML

При первом запуске Системы создаются ключи и сертификат для доступа по протоколу SAML. Если пересоздать контейнеры с Системой, то сертификат SAML изменится и настроенные подключения по SAML перестанут работать. Чтобы этого не произошло необходимо скопировать из работающего контейнера ключи и сертификат SAML командой

sudo docker cp -a dopusk-sso-1:/opt/tomcat/bin/conf/saml host_path_to_volume
Где dopusk-sso-1 - имя контейнера sso, а host_path_to_volume путь до volume на хосте, где запущен docker. Далее необходимо в файле docker-compose.yml добавить volume для контейнера sso:

docker-compose.yml
sso:
      image: docker.iis-soft.ru/iisln/sso
      environment:
        - CATALINA_OPTS=
          -XX:+UseZGC -Xms64m -Xmx512m
          -Duser.language=ru
      ports:
       - "8082:8080"
      logging:
        driver: "json-file"
        options:
          max-size: "50m"
          max-file: "2"
      depends_on:
        - web
      volumes:
      - host_path_to_volume:/opt/tomcat/bin/conf/saml/
      restart: unless-stopped
Где host_path_to_volume - путь до volume на хосте, где запущен docker.

Подключение gitlab

Для подключения gitlab необходимо внести изменения в файл настроек gitlab.rb:

gitlab.rb
gitlab_rails['omniauth_providers'] = [
  {
    name: "saml",
    label: "Provider name", # optional label for login button, defaults to "Saml"
    args: {
      assertion_consumer_service_url: "http://your-url-here/users/auth/saml/callback",
      idp_cert_fingerprint: "your-idp_cert_fingerprint-here",
      idp_sso_target_url: "https://your-url-here/cas/idp/profile/SAML2/Redirect/SSO",
      issuer: "http://your-url-here",
      name_identifier_format: "urn:oasis:names:tc:SAML:2.0:nameid-format:persistent"
    }
  }
]

Для получения значения idp_cert_fingerprint требуется перейти в настройки на вкладку Общие в поле SHA-1 отпечаток сертификата подписи метаданных SAML.

Далее в Системе:

  • В разделе Атрибуты добавить запись gitlab для группы атрибутов gitlab, указав в качестве протокола SAML 2.0 и заполнив список атрибутов (в качестве полей источников выбрать email, first_name, family_name, display_name)
  • В разделе Сервисы необходимо указать в Разрешения значение gitlab, созданную ранее в п. 1

Примечание

В случае, если время в Системе и на сервере Gitlab будет отличаться, возникнет ошибка:

Could not authenticate you from SAML because 
"Current time is earlier than notbefore condition (2019-03-25 <current time> utc < 2019-03-25 <current time> utc)"
Небольшой сдвиг по времени допустим при использовании параметра allowed_clock_drift. При проверке указанное в параметре значение добавляется к текущему времени.
gitlab.rb
gitlab_rails['omniauth_providers'] = [
  {
    name: "saml",
    label: "Provider name", # optional label for login button, defaults to "Saml"
    args: {
      assertion_consumer_service_url: "http://your-url-here/users/auth/saml/callback",
      idp_cert_fingerprint: "your-idp_cert_fingerprint-here",
      idp_sso_target_url: "https://your-url-here/cas/idp/profile/SAML2/Redirect/SSO",
      issuer: "http://your-url-here",
      name_identifier_format: "urn:oasis:names:tc:SAML:2.0:nameid-format:persistent",
      allowed_clock_drift: 1 # for one second clock drift
    }
  }
]

Примечание

Чтобы изменения, внесённые в gitlab.rb вступили в силу, необходимо выполнить:

sudo gitlab-ctl reconfigure