Diferencia entre revisiones de «SIU-Arai/Integracion/Redmine»
m (→Creación de la aplicación Gitlab en Usuarios) |
|||
(No se muestran 11 ediciones intermedias de 2 usuarios) | |||
Línea 1: | Línea 1: | ||
− | |||
− | |||
− | |||
− | |||
− | |||
[[Archivo:siu-arai.png|derecha|link=]] | [[Archivo:siu-arai.png|derecha|link=]] | ||
− | = Integrando | + | = Integrando Redmine = |
− | [https:// | + | [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 | + | * 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- | + | * el identificador disponible para la aplicación, en este ejemplo <code>unx-redmine_1</code> |
− | * el certificado | + | * 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 | + | === 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- | + | #* appUniqueId: 'unx-redmine_1' (recordar es la misma que se pone en idp.yml) |
− | #* url: '<nowiki>https:// | + | #* url: '<nowiki>https://redmine.unx.edu.ar'</nowiki> |
− | #* etiqueta: ' | + | #* 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 | + | === 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. |
− | + | ||
− | + | 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> | ||
+ | |||
+ | 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> | </source> | ||
− | == Ajustes en | + | == 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 === | ||
− | + | Una vez instalado editamos /usr/share/redmine/config/initializers/saml.rb | |
− | + | <source lang="ruby" enclose="div"> | |
− | + | 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 | ||
− | + | </source> | |
− | |||
− | |||
== Limitaciones conocidas == | == Limitaciones conocidas == | ||
− | + | # 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 |
Revisión actual del 15:00 30 oct 2018
Sumario
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
- Ir a Aplicaciones
- 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ú)
- 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
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:
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
- 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.