SIU-Arai/Integracion/Moodle

De SIU
Revisión del 11:06 18 jun 2018 de Svier (discusión | contribuciones) (Ajustes en Moodle)
Saltar a: navegación, buscar
Siu-arai.png

Integrando Moodle

Moodle es una herramienta para la gestión de Aulas Virtuales. Para autenticar con saml usamos este plugin https://moodle.org/plugins/auth_saml2.

Requerimientos

Será necesario contar con:

  • Moodle 2.7 or higher
  • la url del Moodle, en este ejemplo https://moodle.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-moodle_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 Gitlab en Usuarios

  1. Ir a Aplicaciones
  2. Completar el formulario con los siguientes datos
    • appUniqueId: 'unx-moodle_1' (recordar es la misma que se pone en idp.yml)
    • url: 'https://moodle.unx.edu.ar'
    • etiqueta: 'Moodle'
    • 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 Moodle 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://moodle.unx.edu.ar/saml/metadata'
:
                 AssertionConsumerService
: 'https://moodle.unx.edu.ar/redmine/auth/saml/callback'
                 SingleLogoutService
: 'https://moodle.unx.edu.ar/redmine/logout'
                 appUniqueId
: unx-moodle_1


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

   templates_login:
        definition
:
            usage
:
                unx-moodle_1
: login-especifico

Ajustes en Moodle

Instalar el plugin

Para instalar plugins en Moodle ver la documentación (la forma cambia según la versión).

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.