Configurando SP de la aplicacion
Aplicaciones basadas en SIU-Toba
Configuracion SAML
Se debe editar el archivo instalacion/saml_onelogin.ini
el cual se agrego al momento de instalar la aplicación.
Dentro se deben descomentar las secciones.
En la sección de datos basicos indicaremos cual es el atributo que se debe utilizar para recuperar la cuenta del usuario, normalmente defaultUserAccount
en el caso de SIU-Arai: Usuarios
[basicos]
atributo_usuario = defaultUserAccout
permite_login_toba= 0
Luego en la sección del SP debemos indicar cual es la configuracion de IDP que usará (en caso que exista mas de una) y cual es la aplicación que se reportará al mismo.
[sp]
auth_source = default-sp
session.phpsession.cookiename = TOBA_SESSID
idp = http://idp.unn.local/simplesaml/saml2/idp/metadata.php
proyecto_login = <ID_APLICACION>
Finalmente en la última sección definiremos una entrada por cada IDP que tengamos disponible, para lo cual debemos tener disponibles:
- URL donde expone su metadata
- Su nombre
- URL donde se debe enviar la solicitud de autenticacion
- URL donde se debe enviar la solicitud de deslogueo
- Certificado público x509 del servidor
[idp:http://idp.unn.local/simplesaml/saml2/idp/metadata.php]
name = idp.unn.local
SingleSignOnService = http://idp.unn.local/simplesaml/saml2/idp/SSOService.php
SingleLogoutService = http://idp.unn.local/simplesaml/saml2/idp/SingleLogoutService.php
certFile = /opt/certificates/certExample.cert
Agregando certificado al SP
Una alternativa para hacer mas seguro el intercambio de informacion es agregar un certificado al SP de manera que tanto IDP como SP puedan verificar que ambos son quienes dicen ser y que el contenido de los assertions
no fue modificado, esto se realiza incluyendo dos parametros extra con la información de certificado y clave para el SP:
[sp]
auth_source = default-sp
session.phpsession.cookiename = TOBA_SESSID
idp = http://idp.unn.local/simplesaml/saml2/idp/metadata.php
proyecto_login = <ID_APLICACION>
x509cert=/opt/certificates/certSP.crt
privateKey=/opt/certificateKeys/keySP.key
Asi mismo se debe verificar que el parametro este activado
[basicos]
verifyPeer = 1
Solicitando el login por SAML
Para indicarle a la aplicacion Toba que se va a utilizar el mecanismo de autenticacion SAML, es necesario editar el archivo instalacion/instalacion.ini
y agregar la entrada:
autenticacion = "saml_onelogin"
Verificando la configuración
Para verificar que nuestros datos estan siendo accedidos y levantados correctamente, lo que debemos hacer es navegar la URL de la aplicación (sin estar autenticados) y agregando el parametro ?metadata
eso nos brindara un XML donde consta la configuracion del SP.
En el caso del ejemplo, navegando a http://rrhh.bnc.com/?metadata
obtenemos algo similar a:
<md:EntityDescriptor xmlns:md="urn:oasis:names:tc:SAML:2.0:metadata" validUntil="2020-06-25T14:25:45Z" cacheDuration="PT604800S" entityID="http://rrhh.bnc.com/default-sp">
<md:SPSSODescriptor AuthnRequestsSigned="false" WantAssertionsSigned="false" protocolSupportEnumeration="urn:oasis:names:tc:SAML:2.0:protocol">
<md:KeyDescriptor use="signing">
<ds:KeyInfo xmlns:ds="http://www.w3.org/2000/09/xmldsig#">
<ds:X509Data>
<ds:X509Certificate>MIIDezCCAmOgAwIBAgIUZOPFC6gtIUV3UQQTDhCGCGh4ZcEwDQYJKoZIhvcNAQELBQAwTTELMAkGA1UEBhMCQVIxCzAJBgNVBAgMAkJTMQwwCgYDVQQHDANCSEkxDDAKBgNVBAoMA1NJVTEVMBMGA1UEAwwMcnJoaC5iY24uY29tMB4XDTIwMDYyMzE0MjIxN1oXDTMwMDYyMzE0MjIxN1owTTELMAkGA1UEBhMCQVIxCzAJBgNVBAgMAkJTMQwwCgYDVQQHDANCSEkxDDAKBgNVBAoMA1NJVTEVMBMGA1UEAwwMcnJoaC5iY24uY29tMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAuIrUnbTwgMrS02WSunw1m+l6z8zv+8bnnD37c01csAtncoWgVkGxbGazXZSIVtV1iIl+rQHrAy5XrgDf6G1e9M+op7SFvjuAShiqpVMUW6vzCg33oWtmZCtD8XMz1XKPc6PnTyJPHd7hQc8+1VtktISeLXhicNSuIWya1A9OuuXyn+zCGxPNKo3YqBWEppBXHGJNmC28Z1JBBEPSQtCT71rChZ0hxpglS4YsgpFhDhqv2bKnnVh2tpKlD1xhh9tnLeQ/VLqwdXjeArLTcnlKd9/DLeDRXwlLgzPh3DBezA62+rg+jYSDcJl4roterMlRrWvaAMPEYEkMusK5sAqpHwIDAQABo1MwUTAdBgNVHQ4EFgQU/KjrluDjBHIrDZYApVcHkQQOQjIwHwYDVR0jBBgwFoAU/KjrluDjBHIrDZYApVcHkQQOQjIwDwYDVR0TAQH/BAUwAwEB/zANBgkqhkiG9w0BAQsFAAOCAQEAGxqHllkTeEuuZCZNLmWjqTNEhkYFNnVQW+AzgyuSBMnB22bzC7f7r94zobhw8Zqd8m5o+vll0Y1rUnD9hB5Shp+GADvTxQmnulodkmrzcmLMgkMwzuhnEIPniLFZQbqejPlBNezNIyhCr/cYAMLCgt0A681x8RhTU1oIxNrQN9ileZ6qc+WegSfjeojynFTgOj75RbZ3IsZXin03NAeYyASCbQpP30ustPU2ddNYDUKSTCTtp7YbF6kiD0Q6vCfqSk0QgyyQhEAW/rAuZSK9k9/rOA5qvi20C+JHPPSpq7Ff8pmZDklBnonQgGwY+nUngHFq9yp7fIDQdr6vhNx2yQ==</ds:X509Certificate>
</ds:X509Data>
</ds:KeyInfo>
</md:KeyDescriptor>
<md:SingleLogoutService Binding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-Redirect" Location="http://rrhh.bnc.com/?sls"/>
<md:NameIDFormat>defaultUserAccount</md:NameIDFormat>
<md:AssertionConsumerService Binding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST" Location="http://rrhh.bnc.com/?acs" index="1"/>
</md:SPSSODescriptor>
</md:EntityDescriptor>
Aplicaciones SIU no basadas en SIU-Toba
Huarpe
En el caso de SIU-Huarpe debemos editar el archivo app/config/parameters.yml
, previo a eso deberemos contar con la metadata del IDP de la cual obtendremos los parametros.
parameters:
idp.uid_attribute: uid
idp.entity_id: 'http://localhost:8181/idp/saml2/idp/metadata.php'
idp.url_sso: 'http://localhost:8181/idp/saml2/idp/SSOService.php'
idp.url_sls: 'http://localhost:8181/idp/saml2/idp/SingleLogoutService.php'
idp.cert_data: "-----BEGIN CERTIFICATE-----\nMIIDrjCCApagAwIBAgIJAMBWg8BZjy7jMA0GCSqGSIb3DQEBCwUAMGwxCzAJBgNVBAYTAkFSMREwDwYDVQQIDAhNaXNpb25lczEXMBUGA1UEBwwOQ29sb25pYSBBdXJvcmExDDAKBgNVBAoMA0NJTjEMMAoGA1UECwwDU0lVMRUwEwYDVQQDDAxpZHAtdXN1YXJpb3MwHhcNMTkwNzI2MTc1NjQwWhcNMjkwNzI1MTc1NjQwWjBsMQswCQYDVQQGEwJBUjERMA8GA1UECAwITWlzaW9uZXMxFzAVBgNVBAcMDkNvbG9uaWEgQXVyb3JhMQwwCgYDVQQKDANDSU4xDDAKBgNVBAsMA1NJVTEVMBMGA1UEAwwMaWRwLXVzdWFyaW9zMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAu/QANJXZsvR3UmH2qXQ9e2XqcQf6UhAf+/q2tOvAbkYolfaMGNVk3F59UT6dQXry8+SJE5KDSr0i7gdshw+TDPN9SbyVQhQBg2jhH+58A140hhAOW+aqMAQFPr4C2rXUwvv++66021GVQrhrW8WJ5sCMPMMZCDBK5iexLFZf+8y9dHsKWRvgXZiUikcRY10CkUP5BeL4zWYnKF8lYtlcEaqT/YlDwl2K2/H3scA69evRFGsnArrxq4VIFqb7sAsX3tUsA+pVOCnkkag4Nc73fJx74Px85Oy6QZUaVIFkPF31uSmUEFPm/zUXKgpv6X3zVmdIym3NeJL/+L2Kp9Ru6QIDAQABo1MwUTAdBgNVHQ4EFgQU2qA4VI82v8lENCtLZ5qzoLs1sH4wHwYDVR0jBBgwFoAU2qA4VI82v8lENCtLZ5qzoLs1sH4wDwYDVR0TAQH/BAUwAwEB/zANBgkqhkiG9w0BAQsFAAOCAQEArcTxiEZD9msA0bIfDANDVjWJ48NnuMB42zGZxVEwHRVyOGudz/4QoTLxqGjXhyvPhSF/CE0y8SdnQ8kVzWk8aF5pO3S2HlDe3egdKj9y7UpB0J/fbxenq2dvYAX/XZYGAURjqGGukUyRcQ4O73AabIM1zXFRbqM3XcTOKfYqUz4mIZU3ITap+kGP4CNJPnJj+8Lz000CvXayk9UpzBwuFoulCG9C3JvIiKLelXaXsLV3426toIhSD/QY8uo0lKiGmR+TqBVqGB8eYiOG6BHwpd5tSlTl+b1g7AKR37grkTG+PEswJOAMJEtCpIPMnoPzQhtwBlxyOKxOk4yiWOwQrg==\n-----END CERTIFICATE-----\n"
sp.entity_id: 'https://huarpe.unn/app_dev.php/saml/metadata'
sp.url_acs: 'https://huarpe.unn/app_dev.php/saml/acs'
sp.url_sls: 'https://huarpe.unn/app_dev.php/saml/logout'
Por el lado del SP deberemos configurar las URLs relativas a la instalacion de SIU-Huarpe.
Aplicaciones Generales
En general la mayoria de las aplicaciones configuran sus SPs en base a la metadata del IDP, desde dicho XML podemos obtener toda la informacion que necesitamos para configurar el SP.
Esta seccion nos revela el entityID
que utilizaremos
<md:EntityDescriptor xmlns:md="urn:oasis:names:tc:SAML:2.0:metadata" xmlns:ds="http://www.w3.org/2000/09/xmldsig#" entityID="http://localhost:8181/idp/saml2/idp/metadata.php">
La seccion KeyDescriptor
nos provee informacion del certificado público del IDP, el cual necesitaremos ya sea explicitamente o para obtener su Fingerprint segun sea requerido
<ds:X509Data>
<ds:X509Certificate>MIIDrjCCApagAwIBAgIJAMBWg8BZjy7jMA0GCSqGSIb3DQEBCwUAMGwxCzAJBgNVBAYTAkFSMREwDwYDVQQIDAhNaXNpb25lczEXMBUGA1UEBwwOQ29sb25pYSBBdXJvcmExDDAKBgNVBAoMA0NJTjEMMAoGA1UECwwDU0lVMRUwEwYDVQQDDAxpZHAtdXN1YXJpb3MwHhcNMTkwNzI2MTc1NjQwWhcNMjkwNzI1MTc1NjQwWjBsMQswCQYDVQQGEwJBUjERMA8GA1UECAwITWlzaW9uZXMxFzAVBgNVBAcMDkNvbG9uaWEgQXVyb3JhMQwwCgYDVQQKDANDSU4xDDAKBgNVBAsMA1NJVTEVMBMGA1UEAwwMaWRwLXVzdWFyaW9zMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAu/QANJXZsvR3UmH2qXQ9e2XqcQf6UhAf+/q2tOvAbkYolfaMGNVk3F59UT6dQXry8+SJE5KDSr0i7gdshw+TDPN9SbyVQhQBg2jhH+58A140hhAOW+aqMAQFPr4C2rXUwvv++66021GVQrhrW8WJ5sCMPMMZCDBK5iexLFZf+8y9dHsKWRvgXZiUikcRY10CkUP5BeL4zWYnKF8lYtlcEaqT/YlDwl2K2/H3scA69evRFGsnArrxq4VIFqb7sAsX3tUsA+pVOCnkkag4Nc73fJx74Px85Oy6QZUaVIFkPF31uSmUEFPm/zUXKgpv6X3zVmdIym3NeJL/+L2Kp9Ru6QIDAQABo1MwUTAdBgNVHQ4EFgQU2qA4VI82v8lENCtLZ5qzoLs1sH4wHwYDVR0jBBgwFoAU2qA4VI82v8lENCtLZ5qzoLs1sH4wDwYDVR0TAQH/BAUwAwEB/zANBgkqhkiG9w0BAQsFAAOCAQEArcTxiEZD9msA0bIfDANDVjWJ48NnuMB42zGZxVEwHRVyOGudz/4QoTLxqGjXhyvPhSF/CE0y8SdnQ8kVzWk8aF5pO3S2HlDe3egdKj9y7UpB0J/fbxenq2dvYAX/XZYGAURjqGGukUyRcQ4O73AabIM1zXFRbqM3XcTOKfYqUz4mIZU3ITap+kGP4CNJPnJj+8Lz000CvXayk9UpzBwuFoulCG9C3JvIiKLelXaXsLV3426toIhSD/QY8uo0lKiGmR+TqBVqGB8eYiOG6BHwpd5tSlTl+b1g7AKR37grkTG+PEswJOAMJEtCpIPMnoPzQhtwBlxyOKxOk4yiWOwQrg==</ds:X509Certificate>
</ds:X509Data>
Finalmente, tenemos estas secciones que nos proporcionan las URLs de los servicios
<md:SingleLogoutService Binding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-Redirect" Location="http://localhost:8181/idp/saml2/idp/SingleLogoutService.php"/>
<md:SingleSignOnService Binding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-Redirect" Location="http://localhost:8181/idp/saml2/idp/SSOService.php"/>