SimpleSAMLphp es una implementación en PHP del estándar SAML para autenticación única y delegada entre aplicaciones. Proporciona funciones de proveedor de identidad y servicio, es fácil de instalar y configurar, y se usa en federaciones académicas como Feide y WAYF para autenticar millones de usuarios.
2. ¿Qué es?
Una implementación del estándar SAML* en PHP.
Tanto la versión 1.1 como la 2.0 del estándar de OASIS.
Implementa tanto proveedores de identidad (autenticación institucional) como de servicio
(autenticación delegada en aplicaciones).
Fácil de instalar, gestionar y mantener.
Código abierto.
Y mucho más…
28 de abril de 2015
2
* https://www.oasis-open.org/standards#samlv2.0
3. ¿Qué hace?
Autentica usuarios y envia aserciones con su identidad (y,
opcionalmente, atributos) a terceros de confianza (función IdP).
Delega la autenticación del usuario en terceros que albergan las
credenciales e información adicional (función SP).
Implementa Single-Sign-On entre aplicaciones.
Realiza traducción de protocolos (función proxy, soportada
parcialmente).
PAPI
CAS
OpenID
OAuth
28 de abril de 2015
3
4. ¿Qué hace?
Implementa reglas de autorización de acceso a recursos.
Controla los atributos enviados a las aplicaciones.
Soporta múltiples formas de autenticación:
Cuentas almacenadas en un fichero
LDAP
Base de datos
Radius
Certificados digitales
O incluso otros protocolos, haciendo que se comporte como un proxy o pasarela: PAPI, CAS,
OpenID, Windows Live, Facebook, Twitter, Myspace, Linked In, etc.
428 de abril de 2015
5. Ejemplo de uso: Feide*
Federación académica noruega.
Un sólo proveedor de identidad para todas las instituciones.
Apenas unos millones de usuarios potenciales.
Pero más de 75 millones de autenticaciones en 2014.
Basado en SimpleSAMLphp y una arquitectura de altas
prestaciones.
5
* https://www.feide.no/introducing-feide
28 de abril de 2015
6. Otro ejemplo: WAYF*
Federación académica danesa.
Arquitectura hub&spoke usando SimpleSAMLphp como eje central.
Proxy o pasarela SAML entre los proveedores de servicio (que usan
SAML) y los proveedores de identidad (las instituciones danesas,
también usando SAML).
Utilizado incluso más allá del ámbito académico para servicios
prestados por la administración pública.
6
* http://www.wayf.dk/
28 de abril de 2015
7. Último ejemplo: SIR*
Arquitectura hub&spoke usando SimpleSAMLphp como pasarela
SAML.
Proxy o pasarela entre los proveedores de servicio (que usan SAML)
y los proveedores de identidad (las instituciones españolas, usando
el protocolo PAPI desarrollado en RedIRIS**).
Ahora en proceso de sustituir la pasarela y eliminar la traducción de
protocolos entre SAML y PAPI.
Algunas instituciones ya lo usan con un conector PAPI.
7
* http://www.rediris.es/sir
**http://papi.rediris.es/
28 de abril de 2015
8. Instalación
Instalar y configurar Apache. También funciona sobre IIS o nginx.
Descargar la última versión estable y descomprimir en el servidor.
Configurar el servidor web para que apunte al directorio www/
dentro de la instalación de SimpleSAMLphp.
Importante: ¡en caso de no realizar correctamente este paso, estaremos dejando al descubierto
información sensible de nuestra instalación!
Usar el instalador proporcionado por RedIRIS, o…
configurarlo manualmente.
828 de abril de 2015
9. Configuración y mantenimiento
Configuración principal: config/config.php
Los ficheros de configuración son archivos PHP: eso quiere decir
que podemos hacer lo que queramos con ellos, incluso cambiar la
configuración dinámicamente.
Fuentes de autenticación: config/authsources.php
Certificados: cert/
Metadatos: metadata/
Locales: metadata/saml20-idp-hosted.php
Definen la configuración SAML del proveedor de identidad local.
Remotos: metadata/saml20-sp-remote.php
Definen la configuración SAML de los proveedores de servicio remotos. En este caso, el hub del
SIR.
928 de abril de 2015
10. A tener en cuenta: seguridad
Es necesario crear un certificado digital con el que firmar las
respuestas de autenticación y los metadatos. No es necesario que
esté firmado por una CA.
La clave privada debe estar segura en el servidor.
Hay que generar siempre un salt aleatorio. Opción secretsalt en el
archivo config/config.php. Un salt por defecto o fácil de adivinar es
un problema de seguridad.
Evitar que la raíz de la instalación sea accesible desde la web.
Poner una contraseña de administrador decente. Por ejemplo,
usando SHA256 + salt. Se puede generar fácilmente usando bin/
pwgen.php
1028 de abril de 2015
11. A tener en cuenta: automatización
Los metadatos describen cómo intercambiar información entre dos
entidades SAML. Para el correcto funcionamiento del protocolo, los
metadatos tienen que mantenerse mutuamente actualizados entre
el proveedor de servicio y el de identidad.
Lo más recomendable es gestionar los metadatos de forma
automática, usando el módulo metarefresh.
metarefresh usa una URL permanente para descargar los
metadatos de forma periódica y dejarlos disponibles en el formato
adecuado para SimpleSAMLphp.
Es necesario configurar un trabajo programado (por ejemplo, con
cron) en el servidor.
Ventaja: si cambia algo en el SIR, los cambios se propagan de forma
automática y sin intervención.
1128 de abril de 2015
12. Otras ventajas interesantes
Se puede usar SimpleSAMLphp para tener Single-Sign-On entre las
aplicaciones locales. Una aplicación = un SimpleSAMLphp. Fácil de
integrar, pero eso si, para aplicaciones PHP. Otras soluciones para otro
tipo de aplicaciones. Y de paso: ¡Single-Sign-On también con el SIR!
Personalización de la interfaz de usuario. SimpleSAMLphp permite crear
temas para modificar la apariencia a nuestro gusto.
Autenticación de dos factores: es posible configurar authentication
processing filters para autenticar de nuevo al usuario con otro factor. Por
ejemplo: Yubikey.
Manipulación de los atributos y los datos de autenticación mediante
authentication processing filters. Distintas configuraciones dependiendo
de quién pide autenticar al usuario.
Agregación de atributos. Es posible utilizar autoridades externas para
añadir nuevos atributos a la autenticación, que no tenemos disponibles
en el momento en que se realiza la misma.
1228 de abril de 2015
13. Roadmap: hacia SimpleSAMLphp 2.0
Se eliminará mucho código e interfaces antiguos.
Muchas clases cambiarán de nombre o desaparecerán.
Más sencillo de desarrollar, mantener y personalizar:
Traducciones mediante herramientas estándar.
Apariencia personalizable mediante lenguajes también estándar.
Con la vista en el futuro: SimpleSAMLphp Consortium:
Creación de un consorcio que garantice la estabilidad del proyecto y la disponibilidad de los
recursos necesarios para su mantenimiento y desarrollo.
Posibilidad de unirse al consorcio contribuyendo económicamente, lo que garantiza la vida del
software y la capacidad de influir en la toma de decisiones.
1328 de abril de 2015