Capítulo 16. Single Sign On (SSO - Assinatura Única)

16.1. Single Sign On (SSO - Assinatura única) para Aplicativos da Web

Visão Geral

O Single Sign On (SSO) permite a autenticação a um recurso para autorizar o acesso aos demais recursos.

SSO com e sem Cluster

O SSO sem cluster limita o compartilhamento da informação de autorização aos aplicativos de mesmo host virtual. Além disso, não existe resiliência num evento de falha do host. Os dados SSO com cluster podem ser compartilhados entre aplicativos em hosts virtuais múltiplos e são resilientes à falha. Além disso, o SSO com cluster está apto a receber solicitações a partir do balanceador de carga.

Como o SSO funciona

Caso um recurso não esteja protegido, o usuário não é solicitado a autenticá-lo. Caso um usuário acesse um recurso protegido, o usuário é solicitado a autenticá-lo.

Sob uma autenticação com êxito, as funções associadas com o usuário são stored e usadas para autorização de todos os demais recursos associados.
Caso o usuário sair do aplicativo, ou um aplicativo invalidar a sessão de forma programática, todas os dados de autorizações persistidas são removidos e o processo inicia novamente.
A sessão de intervalo não invalida a sessão SSO caso as demais funções estiverem válidas.

Limitações do SSO

Nenhuma propagação sob os limites de terceiros.
O SSO pode ser apenas usado entre aplicativos implantados com os contêineres do JBoss EAP 6.
Autenticação gerenciada apenas pelo contêiner.
Você deve usar os elementos de autenticação gerenciados pelo contêiner tais como <login-config> no seu web.xml do aplicativo.
Cookies solicitadas.
O SSO é mantido através de cookies do navegador e a regravação do URL não é suportada.
Realm e limitações do security-domain
A não ser que o parâmetro requireReauthentication seja configurado para true, todos os aplicativos da web configurados na mesma válvula SSO devem compartilhar a mesma configuração Realm no web.xml e o mesmo security domain.
Você pode aninhar o elemento Realm dentro do elemento Host ou o elemento Mecanismo ao redor, mas não dentro do elemento context.xml para um dos aplicativos da web envolvidos.
O <security-domain> configurado no jboss-web.xml deve ser consistente em todos os aplicativos da web.
Todas as integrações de segurança devem aceitar os mesmos credenciais (por exemplo, nome do usuário e senha).