13.4. Uso do Single Sign On (SSO - Assinatura Única) num Aplicativo da Web
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 perfilfull-ha
para um managed domain ou pelo uso da configuraçãostandalone-full-ha.xml
num servidor autônomo. - O
web
cache-container
e SSO cache-container devem ser apresentados. Os arquivos de configuração de amostraweb
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 perfilfull
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-containerOs perfis e configurações mencionados acima incluem oweb
cache-container por default. Use os seguintes comandos para verificar sua presença. Caso você use um perfil diferente, substitua este nome porha
./profile=ha/subsystem=infinispan/cache-container=web/:read-resource(recursive=false,proxies=false,include-runtime=false,include-defaults=true)
Caso o resultado forsuccess
, o subsistema está presente. Do contrário, você precisa adicioná-lo.Exemplo 13.2. Adição do
web
cache-containerUse os três seguintes comandos para habilitar oweb
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-containerExecute 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 chamadodefault-host
e o cookie domaindomain.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çãoweb.xml
.
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
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.
|
Um aplicativo pode invalidar de forma programática uma sessão invocando o método javax.servlet.http.HttpSession.invalidate()
.