Mantenimiento y administración del IdP
Modo producción
La variable de entorno IDP_MODO_PRODUCCION
permite configurar el comportamiento del IdP respecto a la seguridad en su
ejecución.
Por ej, si se utiliza las imágenes Docker que se proveen con los certificados por defecto, mientras que se
tiene configurado IDP_MODO_PRODUCCION=1
, se visualiza el siguiente mensaje en la pantalla de login:
No pudiendo ingresar al IdP por cuestiones de seguridad. En cambio, si se configura la variable como IDP_MODO_PRODUCCION=0
, se muestra el siguiente mensaje de advertencia:
Si bien, el acceso es posible, se advierte que se trata de un ambiente que no representa la versión de producción (puede tratarse de instancias de pruebas, etc.).
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]/module.php/core/account/usuarios_arai
. En el caso de la
demo la url sería http://localhost:8181/idp/module.php/core/account/usuarios_arai. 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.