Me pregunto si debería usar el protocolo CAS u OAuth + algún proveedor de autenticación para el inicio de sesión único.
Escenario de ejemplo:
- Un usuario intenta acceder a un recurso protegido, pero no está autenticado.
- La aplicación redirige al usuario al servidor SSO.
- Si se autentica, el usuario obtiene un token del servidor SSO.
- El SSO redirige a la aplicación original.
- La aplicación original verifica el token contra el servidor SSO.
- Si el token está bien, se permitirá el acceso y la aplicación conoce la identificación del usuario.
- El usuario realiza un cierre de sesión y se cierra la sesión de todas las aplicaciones conectadas al mismo tiempo (cierre de sesión único).
Hasta donde yo entiendo, eso es exactamente para lo que se inventó CAS. Los clientes CAS tienen que implementar el protocolo CAS para usar el servicio de autenticación. Ahora me pregunto acerca de usar CAS u OAuth en el sitio del cliente (consumidor). ¿Es OAuth un reemplazo para esa parte de CAS? ¿Debería preferirse OAuth como un nuevo estándar de facto? ¿Existe un reemplazo fácil de usar (no Sun OpenSSO!) Para la parte de autenticación de CAS que admite diferentes métodos como nombre de usuario / contraseña, OpenID, certificados TLS ...?
Contexto:
- Las diferentes aplicaciones deberían basarse en la autenticación del servidor SSO y deberían usar algo parecido a una sesión.
- Las aplicaciones pueden ser aplicaciones web GUI o servicios (REST).
- El servidor SSO debe proporcionar una identificación de usuario, que es necesaria para obtener más información sobre el usuario, como roles, correo electrónico, etc., desde un almacén central de información del usuario.
- El cierre de sesión único debería ser posible.
- La mayoría de los clientes están escritos en Java o PHP.
Acabo de descubrir WRAP , que podría convertirse en el sucesor de OAuth. Es un nuevo protocolo especificado por Microsoft, Google y Yahoo.
Apéndice
Aprendí que OAuth no fue diseñado para la autenticación, incluso podría usarse para implementar SSO, sino solo junto con un servicio SSO como OpenID.
OpenID me parece ser el "nuevo CAS". CAS tiene algunas características que OpenID pierde (como el cierre de sesión único), pero no debería ser difícil agregar las partes faltantes en un escenario particular. Creo que OpenID tiene una amplia aceptación y es mejor integrar OpenID en aplicaciones o servidores de aplicaciones. Sé que CAS también es compatible con OpenID, pero creo que CAS es prescindible con OpenID.