SAML, OpenID o OAuth en la Federación de Identidades
Buenas,
Últimamente he estado trabajando en informando bastante en la parte de Federación de identidades la cual tiene como objetivo principal proveer Single Sign On (SSO) en nuestras aplicaciones. Igualmente me gustaría comentar que los principales beneficios del SSO y la federación de identidades es tanto la mejora de la experiencia de usuario evitando que el mismo necesite recordar las claves de acceso a la aplicación y aportándole un acceso directo y transparente a las mismas como evitar la necesidad de mantener y gestionar una base de datos de usuarios, roles y credenciales por cada aplicación.
Antes de empezar hablar sobre los tres principales protocolos de gestión de identidades (SAML, OpenID y OAuth) me gustaría explicar de una manera bastante resumida que es la federación de identidades para aquellos que seáis nuevos en este tema. La Federación de identidades nos permite desacoplar las capas de autorización y autenticación puesto que me permite a las aplicaciones federadas usar un identity management system para obtener la credenciales del usuario y autenticarles en la aplicación. Los identity management system más conocidos en el marcado son Microsoft ADFS y ping identity, sin embargo no quiero orientar este post a las aplicaciones que nos permiten configurar la federación y si a los tres protocolos mencionados en el asunto.
Una vez realizada esta breve introducción pasaremos a explicar un poco más al detalle los tres protocolos disponibles para configurar la federación.
-OpenID: Es un standard de federación abierto esponsorizado entre otros por Microsoft, Google, Facebook y paypal y permite que los usuarios puedan elegir e implementar su proveedor de OpenID preferido para autenticar en las aplicaciones que soportan este protocolo. Un ejemplo del proceso de autenticación y autorización con OpenID en la aplicación servicewnow sería el siguiente:
-SAML: Con mucha diferencia el más usado para autenticar en aplicaciones SAAS por clientes enterpise, está basado en xml y permite la autorización en la aplicación federada con saml mediante el uso de un token generado por el identiy provider. Un ejemplo del proceso de autenticación y autorización con SAML en la aplicación Salesforce sería el siguiente.
-OAuth: Se basa también en un standard abierto y se diferencia de los dos anteriores en que se usa únicamente para autorización y no para autenticación puesto que en este caso el proveedor de autorización es un tercero como puede ser el sistema de autenticación de twitter o facebook. Este protocolo se usa de manera muy frecuente para proveer SSO a aplicaciones móviles donde los dos anteriores tienen más carencias. Un ejemplo del proceso de autenticación con OAuth sería el siguiente:
Espero que resulte de utilidad
Un saludo