El Single SingOn (SSO o inicio de sesión única) es la capacidad de las aplicaciones modernas para permitir a los usuarios el acceso a varias aplicaciones mediante una solo autenticación, utilizando para ello, un proveedor de autenticación en común.
Esto quieres decir que un usuario podría entrar a varias aplicaciones sin necesidad de tener que autenticarse en cada una, en su lugar, solo requerirá autenticarse la primera vez en cualquiera de las aplicaciones y posteriormente podrá acceder al resto si pasar por el proceso de autenticación.
Métodos de autenticación tradicional
Para comprender mejor este concepto es importante entender cómo funcionan los métodos de autenticación tradicional, en el cual, los usuarios requieren de un inicio de sesión en cada aplicación o página web en la que requieren entrar:
Ilustración 1 – Método de autenticación tradicional
En los métodos de autenticación tradicional, el usuario tiene que autenticarse en cada aplicación en la que va requiriendo acceder, de esta manera, el usuario puede tener un usuario y contraseña diferente para cada aplicación. Cuando el usuario introduces sus credenciales, las aplicaciones van y comprueba que los datos del usuario son correctos directamente sobre su base de datos. Si las credenciales son correctas el usuario podrá acceder y operar el sistema.
Single SingOn (SSO)
A diferencia de los métodos tradicionales, SSO permite delegar el proceso de autenticación a una entidad externa, la cual tiene como única responsabilidad autenticar que el usuario es quien dice ser, una vez autenticado este regresa un comprobante o Ticket que deberá ser presentado a la aplicación a la cual se está solicitando el acceso. La aplicación toma el comprobante y lo valida contra la entidad de autenticación (SSO) y valida la veracidad del ticket y la vigencia del mismo, si todo está bien, entonces la aplicación permite al usuario operar el sistema. Cuando el usuario requiere entrar a otra aplicación distinta, tan solo requerirá presentar el ticket para poder autenticarse nuevamente hasta esta otra aplicación.
Ilustración 2 – Autenticación mediante Single SingOut
En esta imagen, podemos apreciar de forma más clara como es el proceso de autenticación mediante SSO. El usuario intenta entrar a la aplicación A, como el usuario no está autenticado, redirecciona al usuario a al proveedor de autenticación que soporte SSO, el usuario se autentifica ante el proveedor de autenticación, si se lleva acabo correctamente, este crea un token que le es enviado al usuario. A continuación, el proveedor de autenticación redirecciona nuevamente al usuario a la aplicación A. Cuando el usuario es redireccionado nuevamente a la aplicación A, el cliente ya cuenta con un token, el cual es enviado a la aplicación A para la autenticación. Finalmente, la aplicación A requiere validar el Token contra el proveedor de autenticación, si este es válido, entonces la aplicación A permite al usuario operar.
Puedes aprender más sobre los tokens y la autenticación en mi articulo autenticacion con json web tokens
Ilustración 3 – Autenticación en la aplicación B
Otro escenario a estudiar, es cuando el usuario intenta entrar a una segunda aplicación (Aplicación B) justo después de haber autenticado en la aplicación A. Lo que pasa es muy parecido a lo que acabamos de analizar. Como el usuario ya cuenta con un Token, solo requiere enviar el token al momento de conectarse con la aplicación B, seguido, este valida que el token sea válido con ayuda del proveedor de autenticación, este último le indica a la aplicación B que el token es válido, entonces la aplicación B permite al usuario operar la aplicación.
En caso de que el proveedor de autenticación regresara que el token es invalido, entonces la aplicación redirecciona al usuario al proveedor de autenticación para que inicie sesión nuevamente.
Ventajas y Desventajas
A continuación, listo algunas de las ventajas/desventajas que veo implementar SSO
Ventajas
- Simplifica la forma de autenticación para los usuarios.
- Permite tener una sola credencial para todos los aplicativos.
- Facilita el porte técnico, pues en caso de pérdida de contraseñas, solo modifica en un solo punto.
Desventajas
- Si falla la autoridad de autenticación, es muy probable que no se tenga accesos a las aplicaciones asociadas.
- Un único usuario/password para todas las aplicaciones aumenta el riesgo de seguridad, pues las mismas credenciales dan acceso a todas las aplicaciones.
- Requiere preparar a las aplicaciones para soportar SSO
Conclusiones
Single SingOn se ha convertido es una de las tecnologías favoritas de las compañías, pues en muchas ocasiones, es posible autenticarse a las aplicaciones con tan solo estar logeados en la computadora.
También tenemos los inicios de sesión mediante redes sociales han sido un éxito en la web, pues es posible acceder a páginas con nuestra cuenta de Google, Facebook, Twitter, etc.
En lo general, implementar Single SingOn es una muy buena estrategia, sin embargo, existe escenarios de alta seguridad, en donde tener un solo usuario/password podría ser muy riesgoso, ¿o te imaginas que los códigos nucleares de una nación se activarán con la contraseña de su Twitter?