OmniAuth
GitLab利用OmniAuth允许用户使用Twitter、GitHub和其他流行的服务登录。
配置OmniAuth不会阻止标准的GitLab身份验证或LDAP(如果配置了)继续工作。用户可以选择使用任何配置的机制进行登录。
支持供应商
这是当前支持的OmniAuth提供程序的列表。在继续每个提供商的文档之前,请确保首先阅读此文档,因为它包含了所有提供商的一些通用设置。
初始OmniAuth配置
在配置各个OmniAuth提供程序之前,我们需要考虑一些所有提供程序共有的全局设置。
- Omniauth需要启用,请参见下面的详细信息。
allow_single_sign_on
允许您指定要允许自动创建帐户的提供程序。默认为假
.如果假
用户必须手动创建,否则他们将无法通过OmniAuth登录。auto_link_ldap_user
可以用,如果你有LDAP / ActiveDirectory集成启用。默认为false。启用后,通过OmniAuth自动创建的用户也将链接到他们的LDAP条目。block_auto_created_users
默认为真正的
.如果真正的
默认情况下,自动创建的用户将被阻止,并且在他们能够登录之前必须由管理员解除阻止。
注意:如果你设置
block_auto_created_users
来假
,确保只定义以下的提供程序allow_single_sign_on
你可以控制,像SAML, Shibboleth, Crowd或谷歌,或者设置它假
否则,互联网上的任何用户都可以在没有管理批准的情况下成功登录到您的GitLab。注意:
auto_link_ldap_user
要求uid
在LDAP和OmniAuth提供程序中,用户的属性必须相同。
要更改这些设置:
对于综合套餐
打开配置文件:
sudo编辑/etc/gitlab/gitlab.rb
和变化:
gitlab_rails[“omniauth_enabled”]=真正的#谨慎!#这允许用户在没有用户帐户的情况下登录。定义允许的提供程序#使用数组,例如["saml", "twitter"],或为true/false以允许所有提供程序或不提供。#认证成功后将自动创建用户帐户。gitlab_rails[“omniauth_allow_single_sign_on”]=[saml的,“推特”]gitlab_rails[“omniauth_auto_link_ldap_user”]=真正的gitlab_rails[“omniauth_block_auto_created_users”]=真正的
从源代码安装
打开配置文件:
cd/home/git/gitlabsudo- ugit- h编辑配置/ gitlab.yml
并更改以下部分:
## OmniAuth设置omniauth:#允许登录通过Twitter, b谷歌等使用OmniAuth提供商启用:真正的#谨慎!#这允许用户在没有用户帐户的情况下登录。定义允许的提供程序#使用数组,例如["saml", "twitter"],或为true/false以允许所有提供程序或不提供。#认证成功后将自动创建用户帐户。allow_single_sign_on:["saml”,"twitter”]auto_link_ldap_user:真正的#锁定这些用户,直到他们被管理员清除(默认值:true)。block_auto_created_users:真正的
现在我们可以选择一个或多个支持供应商上面列出的以继续配置过程。
为现有用户启用OmniAuth
现有用户可以在创建帐户后为特定的提供者启用OmniAuth。例如,如果用户最初使用LDAP登录,则可以启用OmniAuth提供程序(如Twitter)。按照以下步骤为现有用户启用OmniAuth提供程序。
- 正常登录—无论是标准登录、LDAP还是其他OmniAuth提供程序。
- 转到配置文件设置(右上角的轮廓图标)。
- 选择“Account”选项卡。
- 在“已连接帐户”下选择所需的OmniAuth提供商,例如Twitter。
- 用户将被重定向到提供者。一旦用户授权GitLab,他们将被重定向回GitLab。
所选的OmniAuth提供程序现在是活动的,从那时起可以用来登录到GitLab。
将OmniAuth提供程序配置为External
注意:这个设置是在GitLab的8.7版本中引入的
您可以定义想要成为的OmniAuth提供者外部
所以所有的用户创建帐户,或通过这些提供程序登录将无法访问内部项目。您将需要使用提供者的全名,如google_oauth2
谷歌。有关受支持的提供程序的全名,请参阅示例。
注意:如果您决定从外部提供程序列表中删除OmniAuth提供程序,如果您希望将其帐户升级为完整的内部帐户,则需要手动更新使用此方法登录的用户。
对于Omnibus装置
gitlab_rails[“omniauth_external_providers”]=[“推特”,“google_oauth2”]
从源代码安装
omniauth:external_providers:['推特的,'google_oauth2”]
使用自定义全认证提供商
注意:以下信息仅适用于从源安装。
GitLab使用Omniauth用于身份验证,并且已经预装了一些提供程序(例如LDAP, GitHub, Twitter)。但有时这还不够,您需要与其他身份验证解决方案集成。对于这些情况,您可以使用Omniauth提供程序。
步骤
这些步骤相当通用,您需要从Omniauth提供程序的文档中找出确切的细节。
停止GitLab:
停止gitlab服务
把宝石加到你的Gemfile:
宝石“omniauth-your-auth-provider”
如果你正在使用MySQL,运行以下命令安装新的Omniauth provider gem:
sudo -u git -H bundle install——without development test postgres——path vendor/bundle——no-deployment
如果你正在使用PostgreSQL,运行以下命令安装新的Omniauth provider gem:
sudo -u git -H bundle install——without development test mysql——path vendor/bundle——no-deployment
中使用的命令是相同的安装Gems部分与
——path vendor/bundle——no-deployment
而不是——部署
.开始GitLab:
启动gitlab服务
例子
如果您已经成功地设置了一个不随GitLab本身发货的提供程序,请告诉我们。
您可以通过报告成功的配置来帮助他人,并可能通过分享您的经验来分享一些见解或提供对常见错误或陷阱的警告在公共维基.
虽然我们不能正式支持所有可能的身份验证机制,但我们希望至少帮助那些有特定需求的人。
启用或禁用使用OmniAuth提供程序登录,而不禁用导入源
注意:这个设置是在GitLab 8.8版本中引入的。
管理员可以通过某些OmniAuth提供程序启用或禁用Sign In。
注意:默认情况下,登录是通过已配置的所有OAuth提供程序启用的
配置/ gitlab.yml
.
为了启用/禁用OmniAuth提供程序,请转到管理区->设置->登录限制部分->启用OAuth登录源,然后选择要启用或禁用的提供程序。
保持OmniAuth用户配置文件最新
您可以启用来自所选OmniAuth提供程序的配置文件同步,并为所有或特定用户信息启用配置文件同步。
使用LDAP进行身份验证时,始终同步用户的电子邮件。
gitlab_rails[“sync_profile_from_provider”]=[“推特”,“google_oauth2”]gitlab_rails[“sync_profile_attributes”]=[“名字”,“电子邮件”,“位置”]
从源代码安装
omniauth:sync_profile_from_provider:['推特的,'google_oauth2”]sync_profile_attributes:['电子邮件的,'位置的]