使用 Google OAuth 的 GitLab 社区版不允许出现 GitLab 主登录页面只能使用 Google 登录

Dan*_*Dan 2 gitlab google-oauth

我们在 GitLab CE 8.17.2 实例中设置了 Google OAuth。我们组织的用户都是 Google 帐户,因此设置 Google OAuth 是一个简单的决定。

Google OAuth 是我们设置的唯一OAuth 提供商。

我们已向外部用户发送电子邮件以在我们的 GitLab CE 实例中注册帐户。在我们打开/配置 OAuth 之前,这些外部用户将看到 GitLab 主登录/注册页面。

当该外部用户尝试访问我们的网站时,他们会看到 Google 登录页面,并且无法绕过它来显示 GitLab 的主登录/注册页面。没有“跳过”、“返回”或“取消”链接来绕过此 Google 登录页面。外部用户必须创建一个 Google 帐户才能注册,这让我感到困惑。

我们让外部用户尝试了完全清除缓存(历史记录、密码、自动填写表单等)的不同浏览器——Firefox、IE、Chrome——但他们仍然得到这个 Google 登录页面:

在此输入图像描述

我认为 GitLab 登录/注册主页面将出现在您可以登录或注册的位置,并且 Google 徽标将可见以用作身份验证器。从我们的工作方式来看,您必须拥有 Google 帐户才能访问,并且无法绕过 Google 登录页面。

以下是 gitlab.rb OAuth 设置:

## For setting up omniauth
## see https://docs.gitlab.com/ce/integration/omniauth.html
gitlab_rails['omniauth_enabled'] = true
gitlab_rails['omniauth_allow_single_sign_on'] = ['google_oauth2']
gitlab_rails['omniauth_auto_sign_in_with_provider'] = 'google_oauth2'
gitlab_rails['omniauth_block_auto_created_users'] = false
gitlab_rails['omniauth_auto_link_ldap_user'] = true
# gitlab_rails['omniauth_auto_link_saml_user'] = false
# gitlab_rails['omniauth_external_providers'] = ['google_oauth2']
gitlab_rails['omniauth_providers'] = [
  {
    "name" => "google_oauth2",
    "app_id" => "(the app id)",
    "app_secret" => "(the app secret)",
    "args" => { "access_type" => "offline", "approval_prompt" => "" }
  }
]
Run Code Online (Sandbox Code Playgroud)

如果我们缺少某个设置,请告诉我们。如果没有,我感觉 Google OAuth 可能不适合我们。

Dan*_*Dan 5

我们评论/指出:

gitlab_rails['omniauth_auto_sign_in_with_provider'] = 'google_oauth2'
Run Code Online (Sandbox Code Playgroud)

在我们的 gitlab.rb 文件中。

该部分现在如下所示:

## For setting up omniauth
## see https://docs.gitlab.com/ce/integration/omniauth.html
gitlab_rails['omniauth_enabled'] = true
gitlab_rails['omniauth_allow_single_sign_on'] = ['google_oauth2']
# gitlab_rails['omniauth_auto_sign_in_with_provider'] = 'google_oauth2'
gitlab_rails['omniauth_block_auto_created_users'] = false
gitlab_rails['omniauth_auto_link_ldap_user'] = true
# gitlab_rails['omniauth_auto_link_saml_user'] = false
# gitlab_rails['omniauth_external_providers'] = ['google_oauth2']
gitlab_rails['omniauth_providers'] = [
  {
    "name" => "google_oauth2",
    "app_id" => "(the app id)",
    "app_secret" => "(the app secret)",
    "args" => { "access_type" => "offline", "approval_prompt" => "" }
  }
]
Run Code Online (Sandbox Code Playgroud)