SimpleSAMLphp
SAML made easy
Jaime Pérez
28 de Abril de 2015
¿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
¿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
¿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
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
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
Ú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
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
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
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
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
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
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
Más información
https://simplesamlphp.org/
Documentación: https://simplesamlphp.org/docs
  Internacionalización: https://simplesamlphp.org/translation
  Listas de correo: https://simplesamlphp.org/lists
Código: https://github.com/simplesamlphp/simplesamlphp
1428 de abril de 2015
¡Preguntas!
1528 de abril de 2015
¡Gracias!
jaime.perez@uninett.no
1628 de abril de 2015

SimpleSAMLphp

  • 1.
    SimpleSAMLphp SAML made easy JaimePérez 28 de Abril de 2015
  • 2.
    ¿Qué es?   Unaimplementació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 usuariosy 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 reglasde 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ónacadé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* Arquitecturahub&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 configurarApache. 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ónprincipal: 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 encuenta: 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 encuenta: 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 SimpleSAMLphp2.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
  • 14.
    Más información https://simplesamlphp.org/ Documentación: https://simplesamlphp.org/docs  Internacionalización: https://simplesamlphp.org/translation   Listas de correo: https://simplesamlphp.org/lists Código: https://github.com/simplesamlphp/simplesamlphp 1428 de abril de 2015
  • 15.
  • 16.