Solução / arquitetura de logon único (SSO) para o aplicativo de página única (SPA)

Estou investigando a solução SSO para SPAs há algum tempo. Existem muitas soluções com diferenças sutis, enquanto eu também descobri que nem todos têm o mesmo entendimento de SSO e não há muitos padrões estabelecidos de SSO para SPA por aí. Portanto, não estou pedindo um projeto / arquitetura detalhados, mas apenas tente ver se há alguma prática comum nesse tópico.

O que quero dizer com SSO?

Temos alguns novos SPAs em desenvolvimento (também aplicativos para dispositivos móveis e tablets), que serão implantados em diferentes servidores e com domínios diferentes.Também temos um IdP central (authServer) onde todos os usuários identificados serão armazenados.Depois de fazer loginSPA1 e clicou em um botão que me leva aSPA2(ouSPA3, SPA4, potencialmente), não preciso inserir credenciais do usuário e efetuarei login automaticamente.

Qual a diferença para o SPA? (em oposição ao aplicativo da web comum)

Eu olhei para algumas soluções, até soluções antigas como SAML (só quero ter uma idéia sobre o SSO ..). meu candidato atual éOpenId Connect, mas percebi uma diferença para o SPA, se meu entendimento estiver correto:Diferentemente dos aplicativos Web regulares, o SPA geralmente não possui (ou tentamos não ter) um servidor de back-end. O que o SPA possui é apenas um servidor que serve páginas estáticas, juntamente com scripts, folhas de estilo e imagens.

Agora vem o problema:

OpenId Connect é baseado emOAuth2 Código de autorização tipo de concessão, o que significa:

Preciso de um módulo de proxy de back-end para cada SPA, se quiser fazê-lo funcionar.Eu uso uma solução diferente para fazer o SSO do lado do cliente, comoo auth0 forneceNão encontrei nenhuma outra solução / exemplos

Minha pergunta:

Para o ponto 1 acima, meu entendimento está correto? É melhor não permitir que o SPA tenha um código de back-end como um aplicativo Web comum?

No ponto 2 acima, isso parece uma solução, mas como isso é essencialmente diferente deOAuth2 Implícito tipo de concessão?

E existem outras soluções (estrutura, protocolo etc.) que eu deveria conhecer, mas ainda não exploradas?

questionAnswers(1)

yourAnswerToTheQuestion