Capítulo 12. Módulos de Logon
12.1. Módulos de Uso Copiar o linkLink copiado para a área de transferência!
12.1.1. LdapLoginModule Copiar o linkLink copiado para a área de transferência!
LdapLoginModule
é uma implantação LoginModule
que autentica o servidor do Protocolo de Acesso ao Diretório de Peso Leve (LDAP - Lightweight Directory Access Protocol), caso seu nome de usuário e credenciais estejam armazenados num servidor LDAP que é acessado usando um provedor LDAP da Interface do Diretório e Nomeação do Java (JNDI).
Nota
- java.naming.factory.initial
- O nome da classe de implantação
InitialContextFactory
. O padrão é a implantação do provedor LDAP do Suncom.sun.jndi.ldap.LdapCtxFactory
. - java.naming.provider.url
- O URL do LDAP para o servidor LDAP.
- java.naming.security.authentication
- O nível do protocolo para uso. Os valores disponíveis incluem o
none
,simple
estrong
. Caso a propriedade seja indefinida, o comportamento é determinado pelo provedor do serviço. - java.naming.security.protocol
- O protocolo de transporte para uso de acesso de segurança. Configure a opção de configuração ao tipo do provedor do serviço (por exemplo: o SSL). Caso a propriedade seja indefinida, o comportamento será determinado pelo provedor do serviço.
- java.naming.security.principal
- Especifica a identidade do Principal para autenticação do chamador ao serviço. Ele é construído a partir de outras propriedades conforme descrito abaixo.
- java.naming.security.credentials
- Especifica os credenciais do Principal para autenticação do chamador ao serviço. Os credenciais podem levar o modelo de uma senha com hash, uma senha de texto simples, uma chave ou um certificado. Caso a propriedade for indefinida, o comportamento é determinado pelo provedor do serviço.
- principalDNPrefix
- O prefixo adicionado ao nome do usuário para formar o distinguished name do usuário. Consulte
principalDNSuffix
para maiores informações. - principalDNSuffix
- O sufixo adicionado ao nome do usuário quando formando o nome distinguido do usuário. Ele é útil caso você solicite pelo nome do usuário e não queira que o usuário insira o todo o nome distinguido. O uso desta propriedade e
principalDNSuffix
leva ouserDN
a ser formado comoprincipalDNPrefix + username + principalDNSuffix
. - useObjectCredential
- O valor que indica o credencial deve ser obtido como um
Object
opaco usando o tipo doorg.jboss.security.auth.callback.ObjectCallback
doCallback
ao invés de uma senhachar[]
usando umPasswordCallback
do JAAS. Isto permite a passagem da informação sem-credencial para o servidor LDAP. Os valores disponíveis sãotrue
efalse
. - rolesCtxDN
- Ajustado, o nome distinguido do contexto para busca das funções do usuário.
- userRolesCtxDNAttributeName
- Nome de um atributo no objeto do usuário que contém o nome distinguido do contexto para busca das funções do usuário. Isto difere-se do
rolesCtxDN
, de forma que o contexto de busca para funções do usuário pode ser único para cada usuário. - roleAttributeID
- Nome do atributo contendo as funções do usuário. O padrão é
roles
, caso não seja especificado. - roleAttributeIsDN
- Aviso indicando se é que o roleAttributeID contém todo o nome distinguido de um objeto de função, ou o nome de função. O nome de função é obtido do valor do atributo roleNameAttributeId do nome do contexto pelo nome distinguido.Caso verdadeiro, o atributo da função representa o nome distinguido de um objeto de função. Caso seja falso, o nome de função é obtido a partir do valor de um
roleAttributeID
. O padrão éfalse
.Nota
Em certos esquemas de diretório (ex.: MS ActiveDirectory), os atributos de função no objeto do usuário são armazenados como Nomes Distinguidos para objetos de função ao invés de nomes simples. O roleAttributeIsDN deve ser configurado paratrue
, para implantações que usam este tipo de esquema. - roleNameAttributeID
- O nome do atributo de um contexto direcionado pelo valor do nome distinguido roleCtxDN que contém o nome de função. Caso a propriedade roleAttributeIsDN seja configurada para
true
, esta propriedade será usada para encontrar o atributoname
do objeto de função. O padrão égroup
. - uidAttributeID
- Nome do atributo no objeto contento as funções do usuário que correspondem à ID do usuário. Isto é usado para localizar as funções do usuário. O padrão é
uid
, caso não seja especificado. - matchOnUserDN
- Aviso que especifica se é que a busca por funções do usuário devem coincidir com todo o nome distinguido do usuário. Caso
true
, ouserDN
completo será usado como valor de combinação. Casofalse
, apenas o nome do usuário será usado como valor de combinação em relação ao atributo uidAttributeName. O valor padrão éfalse
. - unauthenticatedIdentity
- O nome principal a ser determinado sem conter qualquer informação de autenticação. Este comportamento é herdado a partir da super-classe
UsernamePasswordLoginModule
. - allowEmptyPasswords
- Um aviso indicando se as senhas nulas (comprimento 0) devem ser passadas ao servidor LDAP. Uma senha vazia é tratada como um logon anônimo por alguns servidores LDAP e isto pode não ser um recurso desejado. Para rejeição de senhas nulas, configure isto para
false
. Caso configurado paratrue
, o servidor LDAP validará a senha nula. O padrão étrue
.
InitialLdapContext
com um ambiente composto de propriedades JNDI do LDAP descritas anteriormente nesta seção.
String
ou o credencial Object
dependendo da opção useObjectCredential.
InitialLdapContext
é criada), as funções do usuário são solicitadas pela execução de uma busca da localização rolesCtxDN
com os atributos determinados para os valores de opção roleAttributeName e uidAttributeName. Os nomes de função são obtidos pela invocação do método toString
nos atributos de função do conjunto do resultado de busca.
Exemplo 12.1. Política da Autenticação do Módulo do Logon LDAP
java.naming.factory.initial
, java.naming.factory.url
e java.naming.security
da configuração testLDAP <login-module> indicam as condições:
- A implantação do provedor JNDI do LDAP Sun será usada.
- O servidor LDAP está localizado no
ldaphost.jboss.org
do host na porta 1389. - O método de autenticação simples do LDAP será usado para conexão ao servidor LDAP.
jsmith
mapearia para uid=jsmith,ou=People,dc=jboss,dc=org
.
- Nome Distinguido (DN)
- Num Protocolo de Acesso ao Diretório de Carga Leve (LDAP), o nome distinguido identifica unicamente um objeto num diretório. Cada nome distinguido deve possuir um nome e localização únicos a partir de todos os objetos, que é atingido usando um número de pares de valor do atributo (AVPs). Os AVPs definem informações tais como nomes comuns, unidade de organização, entre outras coisas. A combinação desses valores resulta numa sequência única solicitada pelo LDAP.
Nota
userPassword
da entrada do usuário (theduke
nesta amostra). A maioria dos servidores LDAP operam desta maneira. No entanto, caso o servidor LDAP manuseia autenticações de forma diferente, você deverá certificar-se que o LDAP é configurado de acordo com suas solicitações do ambiente de produção.
rolesCtxDN
para entradas cujos uidAttributeID coincidem com o usuário. Caso o matchOnUserDN seja verdadeiro, a busca será baseada no DN completo do usuário. Do contrário, a busca será baseada no nome do usuário atual inserido. Nesta amostra, a busca está sob o ou=Roles,dc=jboss,dc=org
para quaisquer entradas que possuem o atributo member
ao uid=jduke,ou=People,dc=jboss,dc=org
. A busca localizaria o cn=JBossAdmin
sob a entrada das funções.
cn
. O valor retornado seria o JBossAdmin
, de forma que o usuário jsmith
é determinado à função do JBossAdmin
.
- Formato de Inter-alteração dos Dados LDAP (LDIF)
- O formato de inter-alteração de dados planos usados para representar o conteúdo do diretório LDAP e solicitações de atualização. O conteúdo do diretório é representado como uma gravação para cada solicitação de atualização e objeto. O conteúdo consiste na adição, renomeação, remoção, modificação das solicitações.
Exemplo 12.2. Amostra do Arquivo LDIF
12.1.2. Empilhamento da Senha Copiar o linkLink copiado para a área de transferência!
password-stacking
para useFirstPass
. Caso um módulo anterior configurado para a pilha da senha tenha autenticado o usuário, todos os demais módulos de pilha considerarão o usuário autenticado e apenas tentarão fornecer um conjunto de funções para a etapa de autorização.
password-stacking
for configurada para useFirstPass
, este módulo observa primeiro por um nome e senha compartilhados sob os nomes de propriedade javax.security.auth.login.name e javax.security.auth.login.password respectivamente no mapa do estado compartilhado do módulo de logon.
Nota
Exemplo 12.3. Amostra da Pilha da Senha
12.1.3. Aplicação do Hash na Senha Copiar o linkLink copiado para a área de transferência!
Exemplo 12.4. Aplicação do Hash na Senha
nobody
de nome principal e contém o based64-encoded, hashes MD5 das senhas num arquivo usersb64.properties
. O arquivo usersb64.properties
pode fazer parte de um classpath de implantação ou ser salvo no diretório /conf
.
- hashAlgorithm
- O nome do algoritmo
java.security.MessageDigest
para aplicar o hash na senha. Não existe padrão, de forma que a opção deve ser especificada para ativar o hash. Os valores típicos sãoMD5
eSHA
. - hashEncoding
- A sequência especifica um dos três tipos de codificação:
base64
,hex
ourfc2617
. O padrão ébase64
. - hashCharset
- O conjunto de caractere de codificação usado para converter a senha de texto simples a um array de byte. A codificação do padrão da plataforma é o padrão.
- hashUserPassword
- Especifica que o algorismo hash deve ser aplicado à senha que o usuário submete. A senha do usuário com hash é comparada ao valor no módulo de logon, que espera-se ser um hash da senha. O padrão é
true
. - hashStorePassword
- Especifica que o algorismo hash deve ser aplicado à senha armazenada ao lado do servidor. Isto é usado para resumir a autenticação, onde o usuário submete um hash da senha do usuário com os tokens específicos de solicitação a partir do servidor a ser comparado. O algorismo hash (para resumir, isto seria
rfc2617
) é utilizado para computar o hash ao lado do servidor, que deve coincidir o valor com hash enviado a partir do cliente.
the org.jboss.security.Util
fornece um método de ajuda estático que efetuará o hash numa senha usando a codificação especificada.
String hashedPassword = Util.createPasswordHash("MD5", Util.BASE64_ENCODING, null, null, "password");
String hashedPassword = Util.createPasswordHash("MD5",
Util.BASE64_ENCODING, null, null, "password");
echo -n password | openssl dgst -md5 -binary | openssl base64
echo -n password | openssl dgst -md5 -binary | openssl base64
X03MO1qnZdYdgyfeuILPmQ==
. Este valor deve ser armazenado num armazenamento do usuário.
12.1.4. Identidade não-autenticada Copiar o linkLink copiado para a área de transferência!
unauthenticated identity
é uma opção de configuração do módulo de logon que determina uma identidade específica (convidado, por exemplo) para solicitações que são feitas com a informação não associada. Isto pode ser usado para permitir os servlets não-protegidos para invocar os métodos no EJBs que não requerem uma função específica. Tal principal não possui funções associadas e pode apenas associar tanto os métodos EJB ou EJBs não assegurados que são associados com a restrição de permissão não selecionada.
- unauthenticatedIdentity: define o nome principal que deve ser determinado para solicitações que não contém a informação de autenticação.
12.1.5. UsersRolesLoginModule Copiar o linkLink copiado para a área de transferência!
UsersRolesLoginModule
é um módulo de logon que suporta usuários múltiplos e funções de usuários carregadas de arquivos de propriedades Java. O arquivo de mapeamento nome-para-senha do usuário é chamado users.properties
e o arquivo de mapeamento de nome-para-funções é chamado roles.properties
.
- usersProperties
- Nome do recurso (arquivo) de propriedades contendo o nome do usuário para mapeamentos de senha. O padrão é
<filename_prefix>-users.properties
. - rolesProperties
- Nome do recurso (arquivo) de propriedades contendo o nome de usuário para mapeamentos de funções. O padrão é
<filename_prefix>-roles.properties
.
Exemplo 12.5. UserRolesLoginModule
ejb3-sampleapp-users.properties
no Exemplo 12.5, “UserRolesLoginModule” usa o formato username=password
com cada entrada de usuário numa linha separada:
username1=password1 username2=password2 ...
username1=password1
username2=password2
...
ejb3-sampleapp-roles.properties
referenciado no Exemplo 12.5, “UserRolesLoginModule” usa o username=role1,role2,
padrão com o valor do nome do grupo opcional. Por exemplo:
username1=role1,role2,... username1.RoleGroup1=role3,role4,... username2=role1,role3,...
username1=role1,role2,...
username1.RoleGroup1=role3,role4,...
username2=role1,role3,...
ejb3-sampleapp-roles.properties
é usado para determinar as funções do nome do usuário para o grupo nomeado em particular onde a porção XXX
do nome da propriedade é o nome do grupo. O formulário user name=... é uma abreviação para user name.Roles=..., onde o nome do grupo Roles
é um nome padrão que o JaasSecurityManager
espera conter as funções que definem permissões aos usuários.
jduke
:
jduke=TheDuke,AnimatedCharacter jduke.Roles=TheDuke,AnimatedCharacter
jduke=TheDuke,AnimatedCharacter
jduke.Roles=TheDuke,AnimatedCharacter
12.1.6. DatabaseServerLoginModule Copiar o linkLink copiado para a área de transferência!
DatabaseServerLoginModule
é o módulo do logon na Conectividade do Banco de Dados do Java - Java Database Connectivity (JDBC) que suporta a autenticação e o mapeamento da função. Use este módulo de logon caso você possua o nome do usuário, senha e informação da função armazenada num banco de dados relacional.
Nota
DatabaseServerLoginModule
é baseado em duas tabelas lógicas:
Table Principals(PrincipalID text, Password text) Table Roles(PrincipalID text, Role text, RoleGroup text)
Table Principals(PrincipalID text, Password text)
Table Roles(PrincipalID text, Role text, RoleGroup text)
Principals
associa o PrincipalID
do usuário com a senha válida e a tabela Roles
associa o PrincipalID
do usuário com os próprios conjuntos de funções. As funções usadas para permissões do usuário devem estar contidas em filas com um valor de coluna RoleGroup
do Roles
.
java.sql.ResultSet
possua a mesma estrutura lógica às das tabelas Principals
e Roles
descritas anteriormente. Os nomes atuais das tabelas e colunas não são relevantes uma vez que os resultados são acessados baseando-se no índice da coluna.
Principals
e Roles
, conforme já declarado. As seguintes declarações preenchem as tabelas com os seguintes dados:
- O
PrincipalID
java
com oPassword
doechoman
na tabelaPrincipals
. - O
PrincipalID
java
com a função nomeadaEcho
noRoles
RoleGroup
da tabelaRoles
. - O
PrincipalID
java
com a função nomeadacaller_java
noCallerPrincipal
RoleGroup
da tabelaRoles
.
INSERT INTO Principals VALUES('java', 'echoman') INSERT INTO Roles VALUES('java', 'Echo', 'Roles') INSERT INTO Roles VALUES('java', 'caller_java', 'CallerPrincipal')
INSERT INTO Principals VALUES('java', 'echoman')
INSERT INTO Roles VALUES('java', 'Echo', 'Roles')
INSERT INTO Roles VALUES('java', 'caller_java', 'CallerPrincipal')
- dsJndiName
- O nome do JNDI para o
DataSource
do banco de dados contendo as tabelasPrincipals
eRoles
. O padrão éjava:/DefaultDS
, caso não seja especificado. - principalsQuery
- A consulta de declaração preparada é equivalente a:
select Password from Principals where PrincipalID=?
. Essa será a declaração preparada utilizada, caso não seja especificada. - rolesQuery
- A consulta de declaração preparada é equivalente a:
select Role, RoleGroup from Roles where PrincipalID=?
. Essa será a declaração preparada utilizada, caso não seja especificada. - ignorePasswordCase
- Um aviso boolean indicando se a comparação de senha deve ignorar o caso. Isto pode ser útil para a codificação de senha com hash onde o caso da senha com não é significativo.
- principalClass
- Uma opção que especifica uma classe de implementação
Principal
. Isto deve suportar um construtor levando um argumento de sequência para o nome principal.
DatabaseServerLoginModule
pode ser construída conforme abaixo:
CREATE TABLE Users(username VARCHAR(64) PRIMARY KEY, passwd VARCHAR(64)) CREATE TABLE UserRoles(username VARCHAR(64), userRoles VARCHAR(32))
CREATE TABLE Users(username VARCHAR(64) PRIMARY KEY, passwd VARCHAR(64))
CREATE TABLE UserRoles(username VARCHAR(64), userRoles VARCHAR(32))
login-config.xml
correspondente parece-se com o seguinte:
12.1.7. BaseCertLoginModule Copiar o linkLink copiado para a área de transferência!
BaseCertLoginModule
autentica usuários baseados nos certificados X509. Um caso típico de uso para o módulo de logon é a autenticação CLIENT-CERT
na camada da web.
CertRolesLoginModule
e DatabaseCertLoginModule
estendem o comportamento para obter as funções de autorização de ambos banco de dados ou arquivo de propriedades.
BaseCertLoginModule
precisa de um KeyStore
para executar a validação do usuário. Isto é obtido através de uma implantação org.jboss.security.SecurityDomain
. Normalmente, a implantação SecurityDomain
é configurada usando o org.jboss.security.plugins.JaasSecurityDomain
MBean conforme apresentado neste fragmento de configuração jboss-service.xml
:
jmx-console
do nome, com uma implantação SecurityDomain
disponível através do JNDI sob o java:/jaas/jmx-console
do nome. O domínio de segurança segue o padrão de nomeamento do domínio de segurança do JBossSX.
Procedimento 12.1. Proteção dos Aplicativos da Web com os Certificados e Autorização baseada na Função
jmx-console.war,
usando os certificados de cliente e a autorização baseada da função.
Declaração dos Recursos e Funções
Modifique oweb.xml
para declarar os recursos a serem protegidos com as funções permitidas e domínio de segurança a serem usados para a autenticação e autorização.Copy to Clipboard Copied! Toggle word wrap Toggle overflow Especificação do Domínio de Segurança do JBoss
Especifique o domínio de segurança solicitado nojboss-web.xml
.<jboss-web> <security-domain>jmx-console</security-domain> </jboss-web>
<jboss-web> <security-domain>jmx-console</security-domain> </jboss-web>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Especificação da Configuração do Módulo de Logon
Define a configuração do módulo de logon para o domínio de segurança do jmx-console que você acabou de especificar. Isto é realizado no arquivoconf/login-config.xml
.Copy to Clipboard Copied! Toggle word wrap Toggle overflow
BaseCertLoginModule
é usado para autenticação do cert do cliente e o UsersRolesLoginModule
é apenas usado para a autorização devido à opção password-stacking=useFirstPass
. Ambos os localhost.keystore
e jmx-console-roles.properties
requerem uma entrada que mapeia o associado principal ao cert do cliente.
Exemplo 12.6. Amostra de Certificado
localhost.keystore
precisa do certificado no Exemplo 12.6, “Amostra de Certificado” armazenado com um alias do CN=unit-tests-client, OU=JBoss Inc., O=JBoss Inc., ST=Washington, C=US
. O jmx-console-roles.properties
também precisa de uma entrada para a mesma entrada. Uma vez que o DN contém caracteres que são normalmente tratados como delimitadores, você deverá fugir do problema com caracteres usando uma barra invertida ('\
'), conforme ilustrado abaixo.
Um arquivo roles.properties de amostra para uso com o UsersRolesLoginModule
# Um arquivo roles.properties de amostra para uso com o UsersRolesLoginModule
CN\=unit-tests-client,\ OU\=JBoss\ Inc.,\ O\=JBoss\ Inc.,\ ST\=Washington,\ C\=US=JBossAdmin
admin=JBossAdmin
12.1.8. IdentityLoginModule Copiar o linkLink copiado para a área de transferência!
IdentityLoginModule
é um módulo de logon\nsimples que associa o nome do usuário de código rígido a qualquer assunto autenticado em relação ao módulo. Ele cria uma instância SimplePrincipal
usando o nome especificado pela opção principal
.
Nota
- principal
- Este é o nome a ser usado no
SimplePrincipal
, sendo que todos os usuários são autenticados como tal. O padrão do nome principal éguest
, caso nenhuma opção do principal seja especificada. - funções
- Esta é a lista de vírgula delimitada das funções que serão determinadas ao usuário.
jduke
e determina os nomes de função determinados do TheDuke
e AnimatedCharacter
:
12.1.9. RunAsLoginModule Copiar o linkLink copiado para a área de transferência!
RunAsLoginModule
(org.jboss.security.auth.spi.RunAsLoginModule
) é um módulo de ajuda que envia uma execução como função na pilha durante a fase de logon de autenticação, além de lançar a execução como função tanto na fase de confirmação ou abortação.
RunAsLoginModule
deve ser configurado antes dos módulos de logon que requerem uma execução como função estabelecida.
- roleName
- Nome da função para uso como a execução durante a fase de logon. Caso não especificado, o padrão do
nobody
será usado.
12.1.10. Criação do RunAsIdentity Copiar o linkLink copiado para a área de transferência!
javax.security.auth.Subject
ou uma instância org.jboss.security.RunAsIdentity
. Ambas as classes armazenam um ou mais principais que representam a identidade e uma lista de funções que a identidade possui. No caso do javax.security.auth.Subject
, uma lista de credenciais é também armazenada.
ejb-jar.xml
, você especifica uma ou mais funções que um usuário deve acessar para os diversos métodos EJB. Uma comparação destas listas mostra se o usuário possui uma das funções necessárias para acessar o método EJB.
Exemplo 12.7. Criação do org.jboss.security.RunAsIdentity
ejb-jar.xml
, você especifica um elemento <security-identity> com uma função <run-as> definida como o filho do elemento <session>.
<run-as-principal>
no arquivo jboss-web.xml
.
<security-identity>
em ambos os arquivos ejb-jar.xml
e jboss-web.xml
são analisados no período de implantação. O nome da função <run-as>
e o nome <run-as-principal>
são armazenados na classe org.jboss.metadata.SecurityIdentityMetaData
.
Exemplo 12.8. Determinação de funções múltiplas a um RunAsIdentity
jboss-web.xml
do grupo do elemento <assembly-descriptor>
.
<run-as-principal>
da "Marca" foi criado. A configuração nesta amostra estende a função "Admin" pela adição da função "Suporte". A nova função contém principais extras, incluindo o principal definido originalmente "John".
<security-role>
em ambos os arquivos ejb-jar.xml
e jboss.xml
são analisados no período de implantação. O <role-name>
e os dados <principal-name>
são armazenados na classe org.jboss.metadata.SecurityIdentityMetaData
.
12.1.11. ClientLoginModule Copiar o linkLink copiado para a área de transferência!
ClientLoginModule
(org.jboss.security.ClientLoginModule
) é uma implantação do LoginModule
para uso dos clientes JBoss, com o objetivo de estabelecer a identidade do chamador e credenciais. Basicamente, isto determina o org.jboss.security.SecurityAssociation.principal
ao valor do NameCallback
preenchido pelo callbackhandler
e o org.jboss.security.SecurityAssociation.credential
para o valor do PasswordCallback
preenchido pelo callbackhandler
.
ClientLoginModule
é o único mecanismo suportado por um cliente para estabelecer o chamador do segmento atual. Ambos os aplicativos do cliente autônomo e os ambientes do servidor (atuando como clientes do JBoss EJB onde o ambiente de segurança não foi configurado para uso do JBossSX) devem usar o ClientLoginModule
.
ClientLoginModule
.
- multi-threaded
- O valor que especifica a maneira que os segmentos de logon conectam-se às fontes de armazenamento credencial e principal. Cada segmento de logon possui o próprio armazenamento credencial e principal e cada segmento separado deve executar o próprio logon, quando configurado para verdadeiro. Isto é útil em ambientes onde as identidades do usuário múltiplo são ativas em segmentos separados. A identidade de logon e as credenciais são variáveis aplicáveis a todos os segmentos no VM, quando configurado para falso. A configuração padrão é
false
. - password-stacking
- Ativa a autenticação ao lado dos clientes usando outros módulos de logon tais como o
LdapLoginModule
. Quando a opçãopassword-stacking
for configurada parauseFirstPass
, o módulo primeiramente observa o nome de usuário compartilhado e senha usando ojavax.security.auth.login.name
ejavax.security.auth.login.password
respectivamente no mapa do estado compartilhado do módulo de logon. Isto permite que um módulo configurado anteriormente à estabelecer um nome e senha de usuário do JBoss válidos. - restore-login-identity
- O valor que especifica se é que o principal e credencial
SecurityAssociation
vistos na entrada do métodologin()
estão salvos e restaurados tanto quando abortando ou finalizando. Isto é necessário se você alterar as identidades e restaurar a identidade do chamador original. A informação principal e credencial são salvas e restauradas quando anulando ou finalizando, caso configurado paratrue
. Caso configurado paraSecurityAssociation
, a anulação ou finalização esvaziarão oSecurityAssociation
.