SIU-Arai/Integracion/Gitlab
Sumario
Integrando Gitlab
Gitlab es una herramienta para el desarrollo colaborativo basado en Git. Se puede integrarlo con autenticación vía SAML, con varias opciones.
Requerimientos
Será necesario contar con:
- la url del Gitlab, en este ejemplo
https://gitlab.unx.edu.ar
- la url del IdP, en este ejemplo
https://idp.unx.edu.ar
- el identificador disponible para la aplicación, en este ejemplo
unx-gitlab_1
- el certificado público del IdP, en este ejemplo
-----BEGIN CERTIFICATE-----\n ...... \n-----END CERTIFICATE-----
Ajustes en SIU-Araí: Usuarios
Creación de la aplicación Gitlab en Usuarios
- Ir a Aplicaciones
- Completar el formulario con los siguientes datos
- appUniqueId: 'unx-gitlab_1' (recordar es la misma que se pone en idp.yml)
- url: 'https://gitlab.unx.edu.ar'
- etiqueta: 'Gitlab'
- versión: 10
- Opcional. Activar la opción filtrar por grupo y luego agregar un grupo existente, como devs al filtro. Esto hace que sólo la gente que pertenezca a este grupo pueda acceder a la aplicación.
Definición de Gitlab como SP
Se debe editar el archivo/ruta/arai-usuarios/config/idp.yml
. Hay que tener cuidado al editar este archivo porque el formato yaml es estricto. Si se escapa un TAB se rompe. custom:
'https://gitlab.unx.edu.ar': # esta clave es la que se pone el 'issuer' de la conf de gitlab
AssertionConsumerService: 'https://gitlab.unx.edu.ar/users/auth/saml/callback'
appUniqueId: unx-gitlab_1
'https://gitlab.unx.edu.ar': # esta clave es la que se pone el 'issuer' de la conf de gitlab
AssertionConsumerService: 'https://gitlab.unx.edu.ar/users/auth/saml/callback'
appUniqueId: unx-gitlab_1
Ajustes en Gitlab
Activar autenticación SAML
Se debe editar el archivo/etc/gitlab/gitlab.rb
y activar el servicio omniauth para SAML y adecuar la configuración del IDP. 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",
args: {
assertion_consumer_service_url: 'https://gitlab.unx.edu.ar/users/auth/saml/callback',
idp_cert: "-----BEGIN CERTIFICATE-----\n ...... \n-----END CERTIFICATE-----",
idp_sso_target_url: 'https://idp.unx.edu.ar/saml2/idp/SSOService.php',
issuer: 'https://gitlab.unx.edu.ar',
name_identifier_format: 'urn:oasis:names:tc:SAML:2.0:nameid-format:persistent'
}
}
]
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",
args: {
assertion_consumer_service_url: 'https://gitlab.unx.edu.ar/users/auth/saml/callback',
idp_cert: "-----BEGIN CERTIFICATE-----\n ...... \n-----END CERTIFICATE-----",
idp_sso_target_url: 'https://idp.unx.edu.ar/saml2/idp/SSOService.php',
issuer: 'https://gitlab.unx.edu.ar',
name_identifier_format: 'urn:oasis:names:tc:SAML:2.0:nameid-format:persistent'
}
}
]
Nota:idp_cert
contiene el certificado público del IdP. Se debe concatenar los saltos de linea y expresarlos textualmente con\n
.
Cargar nueva configuración
Dependiendo del tipo de instalación realizada, tendremos que reconfigurar o reiniciar Gitlab. Si hemos instalado vía el paquete omnibus se debería ejecutar:
sudo gitlab-ctl reconfigure