Solución / arquitectura de inicio de sesión único (SSO) para la aplicación de página única (SPA)

He estado investigando la solución SSO para SPA por algún tiempo. Hay muchas soluciones con diferencias sutiles, aunque también descubrí que no todos tienen el mismo conocimiento de SSO y que no hay muchos patrones establecidos de SSO para SPA. Por lo tanto, no estoy pidiendo un diseño / arquitectura detallado, sino que solo trato de ver si hay alguna práctica común sobre este tema.

¿Qué quiero decir con SSO?

Tenemos algunos SPA nuevos en desarrollo (también aplicaciones potencialmente móviles y de tableta), que se implementarán en diferentes servidores y tendrán diferentes dominios.También tenemos un IdP central (authServer) donde se almacenará toda la identificación del usuario.Una vez que me conectoSPA1 e hice clic en un botón que me lleva aSPA2(oSPA3, SPA4, potencialmente), no tengo que ingresar las credenciales de usuario y se iniciará sesión automáticamente.

¿Cuál es la diferencia para SPA? (a diferencia de la aplicación web normal)

He visto algunas soluciones, incluso soluciones antiguas como SAML (solo quiero tener una idea sobre SSO ...). mi candidato actual esOpenId Connect, pero luego me di cuenta de una diferencia para SPA, si mi comprensión es correcta:A diferencia de las aplicaciones web normales, SPA generalmente no tiene (o intentamos no tener) un servidor de fondo. Lo que SPA tiene es solo un servidor que sirve páginas estáticas junto con scripts, hojas de estilo e imágenes.

Ahora viene el problema:

OpenId Connect está basado enOAuth2 Código de Autorización tipo de concesión, que significa:

Necesito un módulo de proxy de back-end para cada SPA si quiero que funcione.Utilizo una solución diferente para hacer SSO del lado del cliente, comoel que proporciona auth0No he encontrado ninguna otra solución / ejemplos

Mi pregunta:

Para el punto 1 anterior, ¿es correcto mi entendimiento? ¿Es mejor no dejar que SPA tenga un código de fondo como una aplicación web normal?

Para el punto 2 anterior, eso suena como una solución, pero ¿cómo es eso esencialmente diferente deOAuth2 Implícito tipo de subvención?

Y, ¿hay otras soluciones (marco, protocolo, etc.) que debería conocer pero que aún no he explorado?

Respuestas a la pregunta(1)

Su respuesta a la pregunta