Ubuntu 上 GitLab 单点登录配置指南
一 方案总览与前置条件
二 方案一 SAML 2.0 集成步骤
gitlab_rails['omniauth_enabled'] = true
gitlab_rails['omniauth_allow_single_sign_on'] = ['saml']
gitlab_rails['omniauth_block_auto_created_users'] = false
gitlab_rails['omniauth_auto_link_saml_user'] = true
gitlab_rails['omniauth_providers'] = [
{
name: "saml",
label: "Company SAML", # 登录按钮显示名
args: {
assertion_consumer_service_url: "https://gitlab.example.com/users/auth/saml/callback",
idp_cert_fingerprint: "43:51:43:a1:b5:fc:8b:b7:0a:3a:a9:b1:0f:66:73:a8", # SHA-1 指纹
idp_sso_target_url: "https://login.example.com/idp",
issuer: "https://gitlab.example.com",
name_identifier_format: "urn:oasis:names:tc:SAML:2.0:nameid-format:persistent"
}
}
]
关键要点:
三 方案二 OAuth2/OpenID Connect 集成步骤
gitlab_rails['omniauth_enabled'] = true
gitlab_rails['omniauth_allow_single_sign_on'] = ['oauth2_generic']
gitlab_rails['omniauth_block_auto_created_users'] = false
gitlab_rails['omniauth_providers'] = [
{
name: 'oauth2_generic',
app_id: 'YOUR_CLIENT_ID',
app_secret: 'YOUR_CLIENT_SECRET',
args: {
client_options: {
site: 'https://idp.example.com',
authorize_url: '/oauth2/authorize',
token_url: '/oauth2/token',
user_info_url: '/oauth2/userinfo'
},
user_response_structure: {
root_path: [], # 依据 IdP 返回结构调整
attributes: { name: 'username', nickname: 'nickName' }
},
name: 'Company OAuth',
strategy_class: "OmniAuth::Strategies::OAuth2Generic"
}
}
]
关键要点:
四 多 IdP 与常见问题处理