Gitlab-CE: разрешить пользователям входить через локальную аутентификацию и Omniauth - PullRequest
0 голосов
/ 18 сентября 2018

У меня есть сервер Gitlab, для которого мне нужно зарегистрировать пользователей.Я хочу иметь возможность создавать учетные записи пользователей через Gitlab API.Это создает локального пользователя.Затем я хочу, чтобы мой пользователь мог впервые войти в систему со своей учетной записью Azure AD.Служба, вызывающая API для создания пользователя, также проходит проверку подлинности Azure AD и знает электронную почту, имя пользователя и другие идентификационные свойства пользователя.Вход в систему несколькими методами - это функция, поддерживаемая gitlab, которую можно протестировать на gitlab.com .

Однако, когда локальная учетная запись пользователя создается с помощью локальной регистрации или вызовов API, в которой указан адрес электронной почты Azure AD пользователя, а затем пользователь пытается войти в систему через Azure AD, Gitlab выдает ошибку.

422
The change you requested was rejected.

Ошибка отсутствует при первом входе в систему через Azure AD без локальной учетной записи, и gitlab успешно создает пользователя и регистрирует его. Это также не отображается, если локальная учетная запись переходит к их учетной записи.Страница настроек пользователя и нажимает кнопку, чтобы подключить учетную запись Azure AD к локальной учетной записи

Соответствующая часть моего файла конфигурации gitlab.rb выглядит следующим образом:

gitlab_rails['omniauth_enabled'] = true
gitlab_rails['omniauth_allow_single_sign_on'] = ['azure_oauth2']
gitlab_rails['omniauth_auto_link_ldap_user'] = true
gitlab_rails['omniauth_block_auto_created_users'] = false
gitlab_rails['sync_profile_from_provider'] = ['azure_oauth2']
gitlab_rails['sync_profile_attributes'] = ['name', 'email']
gitlab_rails['omniauth_providers'] = [
        {
                "name" => "azure_oauth2",
                "args" => {
                        "client_id" => "supersecret",
                        "client_secret" => "supersecret",
                        "tenant_id" => "supersecret",
                }
        }
 ]

Очевидно, что можноподключить локальную учетную запись с Omniauth, но я где-то сталкиваюсь с проблемами.Как локально созданные учетные записи могут автоматически подключаться, когда пользователь нажимает sign in with Azure?

...