Mantenimiento y administración del IdP
Módulo administrador del IDP
El proveedor de identidad o IDP está implementado en SAML mediante la librería SimpleSAMLPhp. Esta es la librería con la que se implementa el servicio de Single SignOn.
Es posible que se necesite:
- verificar datos de IDP (metadata, url, atributos)
- verificar delegación de IDP, por ejemplo para federación de identidades, etc.
- verificaciones simples del IDP
Todas estas accioes se realiza mediante el módulo de administrador de SimpleSAMLPhp. Se accede a través de la URL
[URL_BASE_IDP]/module.php/admin/
.
En el caso de la demo la url sería http://localhost:8181/idp/module.php/admin/.
La clave para acceder es la que está en la variable de entorno IDP_CLAVE_CONSOLA
, en la demo puede ver su valor
en el archivo .env.idp
. Al acceder debería ver una pantalla similar a esto:
Obtener la metadata XML del IDP
Para obtener la metadata en formato XML del IDP, útil para registrar en un SP en particular, se tiene que aceder a la URL
[URL_BASE_IDP]/saml2/idp/metadata.php
.
Para que esto funcione, NO se tiene que estar autenticado previamente en el IDP en el navegador que están accediendo a la url.
En el caso de la demo la url sería http://localhost:8181/idp/saml2/idp/metadata.php. Los metadatos que retorna son parecidos a esto:
<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">
<md:IDPSSODescriptor 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>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>
</ds:KeyInfo>
</md:KeyDescriptor>
<md:KeyDescriptor use="encryption">
<ds:KeyInfo xmlns:ds="http://www.w3.org/2000/09/xmldsig#">
<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>
</ds:KeyInfo>
</md:KeyDescriptor>
<md:SingleLogoutService Binding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-Redirect" Location="http://localhost:8181/idp/saml2/idp/SingleLogoutService.php"/>
<md:NameIDFormat>urn:oasis:names:tc:SAML:2.0:nameid-format:transient</md:NameIDFormat>
<md:SingleSignOnService Binding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-Redirect" Location="http://localhost:8181/idp/saml2/idp/SSOService.php"/>
</md:IDPSSODescriptor>
<md:ContactPerson contactType="technical">
<md:GivenName>Administrator</md:GivenName>
<md:EmailAddress>mailto:admin@institucion.edu.ar</md:EmailAddress>
</md:ContactPerson>
</md:EntityDescriptor>
Obtener datos de sesión actual
Al estar autenticado en el IDP, ya sea por el acceso a cualquier SP que se cuente registrado, desde el mismo navegador es posible acceder a una página de datos de la sesión y token SAML. Es útil para verificar info que viaja en el token.
Para obtener la info se debe acceder a la url [URL_BASE_IDP]/saml2/idp/metadata.php
. En el caso de la
demo la url sería http://localhost:8181/idp/. Debería ver una pantalla similar esto:
Aquí se puede ver la información que viaja en el token SAML, por ejemplo, la imágen del perfil del usuario o su identificador de acceso, entre otros.
Cambiar certificados del IdP SAML y de OpenID Connect
La instalación por defecto viene con un par de certificados, que deben que ser cambiados para cada nueva instalación de producción.
Para hacer esta tarea más simple se incluye un comando que genera las claves necesarias.
idp/bin/instalador instalacion:generar-certs-idp
Este comando es un wrapper de comandos simples de consola que regenerará los dos pares de claves necesarios para SAML y OIDC.
Si desea información específica de este comando puede invocarlo con la la opción --help
.
Logs
En las imágenes Docker los logs se redirigen hacia stdout
.
De cualquier manera, esto es completamente configurable a través de variables de entorno.