У меня есть сервер 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
?