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>
El valor
<ID_APLICACION>
corresponde al atributoid
configurado en el archivoproyecto.ini
del proyecto Toba.
Finalmente en la última sección definiremos una entrada para el IDP que tengamos disponible, para lo cual debemos tener los siguientes datos de dicho servicio IDP:
- URL donde expone su metadata
- un nombre para identificar al IDP
- URL donde el SP debe enviar la solicitud de autenticacion
- URL donde el SP debe enviar la solicitud de deslogueo
- Certificado público x509 usado por el IDP
[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 = /ruta/app-toba/instalacion/idp.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 generando para el SP un certificado y clave, configurando dos parametros extra con la información de certificado y clave para dicho 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"
Configurando la url pública
Para indicarle a la aplicacion Toba la URL pública desde la que se accede mediante el navegador, es necesario editar el
archivo instalacion/i__produccion/instancia.ini
y agregar la entrada:
full_url = "https://url.publica/app"
Esta URL debe ser la de acceso público al SP (sin importar si se encuentra detrás de un proxy reverso).
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>
En esta salida, se deben corroborar los valores correctos de
entityID
,AssertionConsumerService
ySingleLogoutService
.
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: uniqueIdentifier
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"/>