13.4. Uso do Single Sign On (SSO - Assinatura Única) num Aplicativo da Web

Visão Geral

As capacidades do Single Sign On (SSO) são fornecidas pelo subsistema da web e Infinispan. Use este procedimento para configurar o SSO nos aplicativos da web.

Pré-requisitos

  • Você precisa possuir um security domain configurado do qual manuseia a autenticação e autorização.
  • O subsistema infinispan precisa estar presente. Ele está presente no perfil full-ha para um managed domain ou pelo uso da configuração standalone-full-ha.xml num servidor autônomo.
  • O webcache-container e SSO cache-container devem ser apresentados. Os arquivos de configuração de amostra web cache-container, e algumas configurações já contém o SSO cache-container também. Use os seguintes comandos para verificar e habilitar o SSO cache-conteiner também. Perceba que esses comandos modificam o perfil full de um managed domain. Você pode alterar esses comandos para modificar o perfil diferente ou remover a porção /profile=full do comando para o servidor autônomo.

    Exemplo 13.1. Verificação do web cache-container

    Os perfis e configurações mencionados acima incluem o web cache-container por default. Use os seguintes comandos para verificar sua presença. Caso você use um perfil diferente, substitua este nome por ha.
    /profile=ha/subsystem=infinispan/cache-container=web/:read-resource(recursive=false,proxies=false,include-runtime=false,include-defaults=true)
    Caso o resultado for success, o subsistema está presente. Do contrário, você precisa adicioná-lo.

    Exemplo 13.2. Adição do web cache-container

    Use os três seguintes comandos para habilitar o web cache-container a sua configuração. Modifique o nome do perfil, conforme apropriado, assim como outros parâmetros. Esses parâmetros são aqueles usados na configuração default.
    /profile=ha/subsystem=infinispan/cache-container=web:add(aliases=["standard-session-cache"],default-cache="repl",module="org.jboss.as.clustering.web.infinispan")
    /profile=ha/subsystem=infinispan/cache-container=web/transport=TRANSPORT:add(lock-timeout=60000)
    /profile=ha/subsystem=infinispan/cache-container=web/replicated-cache=repl:add(mode="ASYNC",batching=true)

    Exemplo 13.3. Verificação do SSO cache-container

    Execute o seguinte comando Management CLI:
    /profile=ha/subsystem=infinispan/cache-container=web/:read-resource(recursive=true,proxies=false,include-runtime=false,include-defaults=true)
    Busque por um resultado parecido com: "sso" => {
    Caso você não possa encontrá-lo, o SSO cache-container não está presente em sua configuração.

    Exemplo 13.4. Adição do SSO cache-container

    /profile=ha/subsystem=infinispan/cache-container=web/replicated-cache=sso:add(mode="SYNC", batching=true)
  • O subsistema web precisa ser configurado para uso do SSO. O seguinte comando habilita o SSO no servidor virtual chamado default-host e o cookie domain domain.com. O nome do cache é sso, e a reautenticação está desabilitada.
    /profile=ha/subsystem=web/virtual-server=default-host/sso=configuration:add(cache-container="web",cache-name="sso",reauthenticate="false",domain="domain.com")
  • Cada aplicativo que compartilhará a informação SSO precisa ser configurado para uso do mesmo <security-domain> em seu descritor de implantação jboss-web.xml e do mesmo Realm em seu arquivo de configuração web.xml.
Diferenças entre as Válvulas SSO com e sem Cluster

O SSO com Cluster permite o compartilhamento da autenticação entre hosts separados, enquanto o SSO sem cluster não permite isto. As válvulas SSO com e sem cluster são configuradas da mesma maneira, mas o SSO com cluster inclui os parâmetros cacheConfig, processExpiresInterval e maxEmptyLife, que controlam a replicação do cluster dos dados persistidos.

Exemplo 13.5. A amostra da Configuração SSO com Cluster

Uma vez que as configurações com e sem cluster são bastante parecidas, apenas a configuração com cluster é apresentada. Essa amostra usa o security domain chamado tomcat.
<jboss-web>
	<security-domain>tomcat</security-domain>
	<valve>
		<class-name>org.jboss.web.tomcat.service.sso.ClusteredSingleSignOn</class-name>
		<param>
			<param-name>maxEmptyLife</param-name>
			<param-value>900</param-value>
		</param>
	</valve>
</jboss-web>
		

Tabela 13.1. Opções da Configuração SSO

Opções Descrição
cookieDomain
O domain do host a ser usado para o SSO cookies. O default é /. Para permitir que o app1.xyz.com e app2.xyz.com compartilhem o SSO cookies, você pode determinar o cookieDomain para xyz.com.
maxEmptyLife
O SSO com cluster apenas. O número máximo de segundos que uma válvula SSO sem sessões será usada por uma solicitação, antes da expiração. Uma válvula positiva permite um manuseamento próprio de encerramento de um nó, caso seja o único com sessão ativa anexada à válvula. Caso o maxEmptyLife seja configurado para 0, a válvula termina ao mesmo tempo que as cópias de sessão local, porém as cópias de backup das sessões a partir dos aplicativos com cluster são disponibilizadas aos outros nós. A permissão à válvula de permanecer ativa além da atividade das sessões gerenciadas permite que o usuário pare para realizar outra solicitação que pode então falhar a um nó diferente, onde isto ativa a cópia de backup da sessão. O default é de 1800 (30 minutos).
processExpiresInterval
O SSO com cluster apenas. O número mínimo de segundos entre as tentativas da válvula encontrar e invalidar as instâncias SSO que expiraram o intervalo MaxEmptyLife. O default é 60 (1 minuto).
requiresReauthentication
Caso verdadeiro, cada solicitação usa os credenciais para reautenticar o security realm. Caso falso (o default), o SSO cookie válido é suficiente para a válvula autenticar cada nova solicitação.
Invalidação da Sessão

Um aplicativo pode invalidar de forma programática uma sessão invocando o método javax.servlet.http.HttpSession.invalidate().