4.2. O JaasSecurityManagerService MBean


O serviço do MBean JaasSecurityManagerService administra os gerenciadores de segurança. Embora seu nome inicie com Jaas, os gerenciadores de segurança que isto manuseia não precisam usar JAAS em suas implantações. O nome surgiu a partir do fato que a implantação do gerenciador de segurança é um JaasSecurityManager. A função principal do JaasSecurityManagerService é externalizar a implantação do gerenciador de segurança. Você pode alterar a implantação do gerenciador de segurança fornecendo uma implantação alternativa das interfaces AuthenticationManager e RealmMapping.
A segunda função de fundamento do JaasSecurityManagerService é fornecer uma implantação javax.naming.spi.ObjectFactory do JNDI para permitir um gerenciamento simples sem código do nome JNDI para mapeamento da implantação do gerenciador de segurança. A segurança é ativada pela especificação do nome JNDI da implantação de segurança através do elemento descritor da implantação <security-domain>.
Quando você especifica o nome JNDI, é necessário ter um bind de objeto disponível para uso. O JaasSecurityManagerService gerencia a associação das instâncias do gerenciador de segurança para nomes pela efetuação de bind na próxima referência de sistema de nomeação (entre o mesmo), como o JNDI ObjectFactory sob o nome de java:/jaas. Tudo isto, para simplificar a configuração do nome JNDI para bindings do gerenciador de segurança. Isto permite uma convenção de nomeação do java:/jaas/XYZ do formulário como o valor para o elemento <security-domain> e a instância do gerenciador de segurança para o domínio de segurança ser criado, conforme isto seja necessário.
O gerenciador de segurança para o XYZ de domínio é criado na primeira busca relacionada à efetuação de bind ao java:/jaas/XYZ, criando uma instância da classe especificada pelo atributo SecurityManagerClassName usando um construtor que leva o nome do domínio de segurança.

Importante

Na versões anteriores à versão 5.0 da Plataforma do Aplicativo Enterprise, o prefixo "java:/jaas, em cada elemento do descritor da implantação <security-domain>, era solicitado para efetuação do bind correta no nome JNDI do domínio de segurança para os binds do gerenciador de segurança.
O prefixo java:/jaas não é solicitado pela declaração do domínio de segurança a partir da Plataforma do Aplicativo JBoss Enterprise 5. O prefixo java:/jaas ainda é suportado e é mantido para a compatibilidade inversa.
Por exemplo, considere o seguinte trecho de configuração de segurança do seguinte recipiente:
<jboss>
    <!-- Configure all containers to be secured under the "customer" security domain -->
    <security-domain>customer</security-domain>
    <!-- ... -->
</jboss>
Copy to Clipboard Toggle word wrap
Qualquer busca de nome customer retornará uma instância de gerenciador de segurança associada com o domínio de segurança nomeado customer. Este gerenciador de segurança implementará as interfaces de segurança e será do tipo especificado pelo atributo JaasSecurityManagerServiceSecurityManagerClassName.
O MBean do JaasSecurityManagerService é configurado por padrão para uso na distribuição do JBoss padrão e você normalmente poderá usar a configuração padrão assim como ela é. Os atributos configuráveis do JaasSecurityManagerService incluem:
SecurityManagerClassName
O nome da classe que fornece a implantação do gerenciador de segurança. A implantação deve suportar ambas as interfaces org.jboss.security.AuthenticationManager e org.jboss.security.RealmMapping. O padrão é org.jboss.security.plugins.JaasSecurityManager, caso não tenha sido especificado.
CallbackHandlerClassName
O nome da classe que fornece a implantação javax.security.auth.callback.CallbackHandler usada pelo JaasSecurityManager.

Nota

Você pode substituir o manuseador usado pela implantação padrão JaasSecurityManager, caso a implantação padrão (org.jboss.security.auth.callback.SecurityAssociationHandler) não atender suas necessidades. A maioria das implantações irão considerar o manuseador padrão suficiente.
SecurityProxyFactoryClassName
O nome da classe que fornece a implantação org.jboss.security.SecurityProxyFactory. O padrão é org.jboss.security.SubjectSecurityProxyFactory, caso não seja especificado.
AuthenticationCacheJndiName
Especifica a localização da política do cache credencial de segurança. Isto é tratado primeiramente como uma localização ObjectFactory capaz de retornar as instâncias baseando-se no <security-domain>. Isto é realizado anexando o nome do domínio de segurança ao nome quando observando o CachePolicy para o domínio. Caso isto falhe, a localização é tratada como um CachePolicy único para todos os domínios de segurança. A política de cache de período limitado é usada como padrão.
DefaultCacheTimeout
Especifica o intervalo da política de cache de período limitado em segundos. O valor padrão é 1800 segundos (30 minutos). O valor de uso para o intervalo é uma média entre as operações de autenticações frequentes e do período pelo qual a informação de credencial pode permanecer fora de sync em relação ao armazenamento da informação de segurança. Caso você deseje desativar o cache dos credenciais de segurança, configure isto para 0 com o objetivo de forçar a autenticação a ocorrer todo o tempo. Isto não possui efeito caso o AuthenticationCacheJndiName tenha o valor padrão alterado.
DefaultCacheResolution
Especifica a resolução da política de cache de período limitado padrão em segundos. Isto controla o intervalo pelo qual o carimbo de tempo atual do cache é atualizado e deve ser inferior que DefaultCacheTimeout, com o objetivo do intervalo ser significativo. A resolução padrão é de 60 segundos (1 minuto). Isto não tem efeito caso o AuthenticationCacheJndiName tenha o valor padrão alterado.
DefaultUnauthenticatedPrincipal
Especifica o principal para uso para usuários não-autenticados. Esta configuração facilita a configuração de permissões padrões para usuários que não foram autenticados.
O JaasSecurityManagerService também suporta um número de operações úteis. Elas incluem o esvaziamento de qualquer cache de autenticação do domínio de segurança no período de rodagem e qualquer um dos métodos da interface do gerenciador de segurança.
O esvaziamento do cache de autenticação do domínio de segurança pode ser usado para remover todos os credenciais quando o armazenamento subjacente for atualizado e você desejar o estado do armazenamento a ser usado imediatamente. A assinatura da operação do MBean é a seguinte: public void flushAuthenticationCache(String securityDomain).
Isto pode ser invocado de forma programática usando o seguinte trecho de código:
MBeanServer server = ...;
String jaasMgrName = "jboss.security:service=JaasSecurityManager";
ObjectName jaasMgr = new ObjectName(jaasMgrName);
Object[] params = {domainName};
String[] signature = {"java.lang.String"};
server.invoke(jaasMgr, "flushAuthenticationCache", params, signature);
Copy to Clipboard Toggle word wrap
A obtenção da lista dos usuários ativos fornece um instantâneo das chaves Principals no cache de autenticação do domínio de segurança que não estão expiradas. A assinatura da operação do MBean é a seguinte: public List getAuthenticationCachePrincipals(String securityDomain).
Isto pode ser invocado de forma programática usando o seguinte trecho de código:
MBeanServer server = ...;
String jaasMgrName = "jboss.security:service=JaasSecurityManager";
ObjectName jaasMgr = new ObjectName(jaasMgrName);
Object[] params = {domainName};
String[] signature = {"java.lang.String"};
List users = (List) server.invoke(jaasMgr, "getAuthenticationCachePrincipals", 
                                  params, signature);
Copy to Clipboard Toggle word wrap
O gerenciador de segurança possui alguns métodos de acesso adicionais.
public boolean isValid(String securityDomain, Principal principal, Object credential);
public Principal getPrincipal(String securityDomain, Principal principal);
public boolean doesUserHaveRole(String securityDomain, Principal principal, 
                                Object credential, Set roles);
public Set getUserRoles(String securityDomain, Principal principal, Object credential);
Copy to Clipboard Toggle word wrap
Eles fornecem acesso ao AuthenticationManager correspondente e ao método da interface do domínio de segurança associado nomeado pelo argumento securityDomain.
Voltar ao topo
Red Hat logoGithubredditYoutubeTwitter

Aprender

Experimente, compre e venda

Comunidades

Sobre a documentação da Red Hat

Ajudamos os usuários da Red Hat a inovar e atingir seus objetivos com nossos produtos e serviços com conteúdo em que podem confiar. Explore nossas atualizações recentes.

Tornando o open source mais inclusivo

A Red Hat está comprometida em substituir a linguagem problemática em nosso código, documentação e propriedades da web. Para mais detalhes veja o Blog da Red Hat.

Sobre a Red Hat

Fornecemos soluções robustas que facilitam o trabalho das empresas em plataformas e ambientes, desde o data center principal até a borda da rede.

Theme

© 2025 Red Hat