Diferencia entre revisiones de «SIU-Arai/Integracion/Redmine»

De SIU
Saltar a: navegación, buscar
(Página creada con «derecha|link= = Integrando Gitlab = [https://gitlab.com Gitlab] es una herramienta para el desarrollo colaborativo basado en Git. Se puede integr...»)
 
m (Creación de la aplicación Gitlab en Usuarios)
 
(No se muestran 12 ediciones intermedias de 2 usuarios)
Línea 1: Línea 1:
 
[[Archivo:siu-arai.png|derecha|link=]]
 
[[Archivo:siu-arai.png|derecha|link=]]
  
= Integrando Gitlab =
+
= Integrando Redmine =
  
[https://gitlab.com Gitlab] es una herramienta para el desarrollo colaborativo basado en Git. Se puede integrarlo con autenticación vía SAML, [https://docs.gitlab.com/ce/integration/saml.html con varias opciones].
+
[https://www.redmine.org/ Redmine] es una herramienta para la gestión de proyectos. Para autenticar con saml usamos este plugin https://github.com/chrodriguez/redmine_omniauth_saml.
  
 
== Requerimientos ==
 
== Requerimientos ==
 
Será necesario contar con:
 
Será necesario contar con:
* la url del Gitlab, en este ejemplo <code><nowiki>https://gitlab.unx.edu.ar</nowiki></code>
+
* Redmine 3.0 or higher
 +
* la url del Redmine, en este ejemplo <code><nowiki>https://redmine.unx.edu.ar</nowiki></code>
 
* la url del IdP, en este ejemplo <code><nowiki>https://idp.unx.edu.ar</nowiki></code>
 
* la url del IdP, en este ejemplo <code><nowiki>https://idp.unx.edu.ar</nowiki></code>
* el identificador disponible para la aplicación, en este ejemplo <code>unx-gitlab_1</code>
+
* el identificador disponible para la aplicación, en este ejemplo <code>unx-redmine_1</code>
* el certificado público del IdP, en este ejemplo <code>-----BEGIN CERTIFICATE-----\n ...... \n-----END CERTIFICATE-----</code>
+
* el fingerprint del certificado del idp (es el certificado interno que usa arai, no el del navegador)
  
 
== Ajustes en SIU-Araí: Usuarios ==
 
== Ajustes en SIU-Araí: Usuarios ==
  
=== Creación de la aplicación Gitlab en Usuarios ===
+
=== Creación de la aplicación Redmine en Usuarios ===
 
# Ir a Aplicaciones
 
# Ir a Aplicaciones
 
# Completar el formulario con los siguientes datos
 
# Completar el formulario con los siguientes datos
#* appUniqueId: 'unx-gitlab_1' (recordar es la misma que se pone en idp.yml)
+
#* appUniqueId: 'unx-redmine_1' (recordar es la misma que se pone en idp.yml)
#* url: '<nowiki>https://gitlab.unx.edu.ar'</nowiki>
+
#* url: '<nowiki>https://redmine.unx.edu.ar'</nowiki>
#* etiqueta: 'Gitlab'
+
#* etiqueta: 'Redmine'
 
#* versión: 10
 
#* versión: 10
 
#* ícono: (elegir un logo .png, se mostrará en el menú)
 
#* ícono: (elegir un logo .png, se mostrará en el menú)
 
# 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.
 
# 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 ===
+
=== Definición de Redmine como SP ===
Se debe editar el archivo <code>/ruta/arai-usuarios/config/idp.yml</code>. Hay que tener cuidado al editar este archivo porque el formato yaml es estricto. Si se escapa un TAB se rompe.<source lang="yaml" enclose="div"> custom:
+
Se debe editar el archivo <code>/ruta/arai-usuarios/config/idp.yml</code>. Hay que tener cuidado al editar este archivo porque el formato yaml es estricto. Si se escapa un TAB se rompe.
    '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
 
  
 +
Así se agrega el SP al IdP
 +
<source lang="yaml" enclose="div">    service_provider:
 +
        custom:
 +
            'https://redmine.siu.edu.ar/saml/metadata':
 +
                AssertionConsumerService: 'https://redmine.siu.edu.ar/redmine/auth/saml/callback'
 +
                SingleLogoutService: 'https://redmine.siu.edu.ar/redmine/logout'
 +
                appUniqueId: siu-redmine_1.siu-redmine
 
</source>
 
</source>
  
== Ajustes en Gitlab ==
 
  
 +
Opcionalmente, se puede elegir un [[SIU-Arai/usuarios/templates-login|template]] específico para la página del login si el usuario accede directamente a la url de redmine:
 +
<source lang="yaml" enclose="div">    templates_login:
 +
        definition:
 +
            usage:
 +
                siu-redmine_1.siu-redmine: login-especifico
 +
</source>
 +
 +
== Ajustes en Redmine ==
 +
 +
=== Instalar el plugin ===
 +
Para instalar plugins en redmine (la forma cambia según la versión)
 +
https://github.com/chrodriguez/redmine_omniauth_saml
 +
 +
=== Fingerprint SSL ===
 +
Si no queremos cargar todo el certificado podemos calcularle el fingerprint
 +
'''Dentro del server del idp''' buscamos el certificado y lo calculamos
 +
<code>openssl x509 -noout -fingerprint -sha1 -inform pem -in /srv/certs/idp.crt</code>
 
=== Activar autenticación SAML ===
 
=== Activar autenticación SAML ===
Se debe editar el archivo <code>/etc/gitlab/gitlab.rb</code>y activar el servicio omniauth para SAML y adecuar la configuración del IDP.<source lang="ruby" enclose="div"> gitlab_rails['omniauth_enabled'] = true
+
Una vez instalado editamos /usr/share/redmine/config/initializers/saml.rb
 gitlab_rails['omniauth_allow_single_sign_on'] = ['saml']
+
<source lang="ruby" enclose="div">  
 gitlab_rails['omniauth_block_auto_created_users'] = false
+
Redmine::OmniAuthSAML::Base.configure do |config|
 gitlab_rails['omniauth_auto_link_saml_user'] = true 
+
  config.saml = {
 gitlab_rails['omniauth_providers'] = [
+
    :assertion_consumer_service_url => "https://redmine.siu.edu.ar/redmine/auth/saml/callback", # The redmine application hostname
    {
+
    :issuer                        => "https://redmine.siu.edu.ar/saml/metadata",                 # The issuer name
      "name" => "saml",
+
    :idp_sso_target_url            => "https://idp3.siu.edu.ar/saml2/idp/SSOService.php", # SSO login endpoint
       args: {
+
    :idp_cert_fingerprint          => "C9:9F:99:5B:4D:78:D5:7E:72:4E:E9:76:B0:D0:5F:16:23:A9:3C:50", # SSO ssl certificate fingerprint
               assertion_consumer_service_url: 'https://gitlab.unx.edu.ar/users/auth/saml/callback',
+
    :name_identifier_format        => "urn:oasis:names:tc:SAML:2.0:nameid-format:persistent",
               idp_cert: "-----BEGIN CERTIFICATE-----\n ...... \n-----END CERTIFICATE-----",
+
    :signout_url                    => "https://idp3.siu.edu.ar/saml2/idp/SingleLogoutService.php?ReturnTo=",
               idp_sso_target_url: 'https://idp.unx.edu.ar/saml2/idp/SSOService.php',
+
    :idp_slo_target_url            => "https://idp3.siu.edu.ar/saml2/idp/SingleLogoutService.php",
               issuer: 'https://gitlab.unx.edu.ar',
+
    :name_identifier_value          => "uniqueIdentifier", # Which redmine field is used as name_identifier_value for SAML logout
               name_identifier_format: 'urn:oasis:names:tc:SAML:2.0:nameid-format:persistent'
+
    :attribute_mapping              => {
             }
+
    # How will we map attributes from SSO to redmine attributes
    }
+
      :login      => 'extra.raw_info.uniqueIdentifier',
  ]
+
      :firstname  => 'extra.raw_info.cn',
</source> <blockquote>Nota: <code>idp_cert</code>contiene el certificado público del IdP. Se debe concatenar los saltos de linea y expresarlos textualmente con <code>\n</code>.</blockquote>
+
      :lastname  => 'extra.raw_info.sn',
 +
      :mail      => 'extra.raw_info.mail'
 +
    }
 +
  }
  
=== Cargar nueva configuración ===
+
  config.on_login do |omniauth_hash, user|
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:
+
    # Implement any hook you want here
sudo gitlab-ctl reconfigure
+
    # File.open("/tmp/redmine.log", 'w') { |file| file.write(omniauth_hash) }
 +
  end
 +
end
 +
 
 +
</source>
  
 
== Limitaciones conocidas ==
 
== Limitaciones conocidas ==
# Single Logout. No está soportado en Gitlab [https://gitlab.com/gitlab-org/gitlab-ce/issues/17344 aún].
+
# Además de conectar vía SAML, el usuario tendrá que establecer una password local en Redmine para checkoutear/commitear. Una opción es configurar el provider LDAP para que la cuenta en Redmine tenga múltiple identidades (SAML, LDAP, local) y con esto utilice su clave mediante autenticación LDAP.
# Además de conectar vía SAML, el usuario tendrá que establecer una password local en Gitlab para pull/push. Una opción es configurar el provider LDAP para que la cuenta en Gitlab tenga múltiple identidades (SAML, LDAP, local) y con esto utilice su clave mediante autenticación LDAP.
 

Revisión actual del 15:00 30 oct 2018

Siu-arai.png

Integrando Redmine

Redmine es una herramienta para la gestión de proyectos. Para autenticar con saml usamos este plugin https://github.com/chrodriguez/redmine_omniauth_saml.

Requerimientos

Será necesario contar con:

  • Redmine 3.0 or higher
  • la url del Redmine, en este ejemplo https://redmine.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-redmine_1
  • el fingerprint del certificado del idp (es el certificado interno que usa arai, no el del navegador)

Ajustes en SIU-Araí: Usuarios

Creación de la aplicación Redmine en Usuarios

  1. Ir a Aplicaciones
  2. Completar el formulario con los siguientes datos
    • appUniqueId: 'unx-redmine_1' (recordar es la misma que se pone en idp.yml)
    • url: 'https://redmine.unx.edu.ar'
    • etiqueta: 'Redmine'
    • versión: 10
    • ícono: (elegir un logo .png, se mostrará en el menú)
  3. 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 Redmine 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.

Así se agrega el SP al IdP

   service_provider:
        custom
:
             'https://redmine.siu.edu.ar/saml/metadata'
:
                 AssertionConsumerService
: 'https://redmine.siu.edu.ar/redmine/auth/saml/callback'
                 SingleLogoutService
: 'https://redmine.siu.edu.ar/redmine/logout'
                 appUniqueId
: siu-redmine_1.siu-redmine


Opcionalmente, se puede elegir un template específico para la página del login si el usuario accede directamente a la url de redmine:

   templates_login:
        definition
:
            usage
:
                siu-redmine_1.siu-redmine
: login-especifico

Ajustes en Redmine

Instalar el plugin

Para instalar plugins en redmine (la forma cambia según la versión) https://github.com/chrodriguez/redmine_omniauth_saml

Fingerprint SSL

Si no queremos cargar todo el certificado podemos calcularle el fingerprint Dentro del server del idp buscamos el certificado y lo calculamos openssl x509 -noout -fingerprint -sha1 -inform pem -in /srv/certs/idp.crt

Activar autenticación SAML

Una vez instalado editamos /usr/share/redmine/config/initializers/saml.rb

 
Redmine::OmniAuthSAML::Base.configure do |config|
  config.saml = {
    :assertion_consumer_service_url => "https://redmine.siu.edu.ar/redmine/auth/saml/callback", # The redmine application hostname
    :issuer                         => "https://redmine.siu.edu.ar/saml/metadata",                 # The issuer name
    :idp_sso_target_url             => "https://idp3.siu.edu.ar/saml2/idp/SSOService.php", # SSO login endpoint
    :idp_cert_fingerprint           => "C9:9F:99:5B:4D:78:D5:7E:72:4E:E9:76:B0:D0:5F:16:23:A9:3C:50", # SSO ssl certificate fingerprint
    :name_identifier_format         => "urn:oasis:names:tc:SAML:2.0:nameid-format:persistent",
    :signout_url                    => "https://idp3.siu.edu.ar/saml2/idp/SingleLogoutService.php?ReturnTo=",
    :idp_slo_target_url             => "https://idp3.siu.edu.ar/saml2/idp/SingleLogoutService.php",
    :name_identifier_value          => "uniqueIdentifier", # Which redmine field is used as name_identifier_value for SAML logout
    :attribute_mapping              => {
    # How will we map attributes from SSO to redmine attributes
      :login      => 'extra.raw_info.uniqueIdentifier',
      :firstname  => 'extra.raw_info.cn',
      :lastname   => 'extra.raw_info.sn',
      :mail       => 'extra.raw_info.mail'
    }
  }

  config.on_login do |omniauth_hash, user|
    # Implement any hook you want here
    # File.open("/tmp/redmine.log", 'w') { |file| file.write(omniauth_hash) }
  end
end

Limitaciones conocidas

  1. Además de conectar vía SAML, el usuario tendrá que establecer una password local en Redmine para checkoutear/commitear. Una opción es configurar el provider LDAP para que la cuenta en Redmine tenga múltiple identidades (SAML, LDAP, local) y con esto utilice su clave mediante autenticación LDAP.