A
tecnologia Java inclui um amplo conjunto de APIs, ferramentas e implementações
de algoritmos de segurança, mecanismos de utilização e protocolos. As APIs de
segurança abrangem uma diversidade de áreas, incluindo a criptografia; a
infraestrutura de chaves públicas; a comunicação segura; a autenticação e o controle
de acesso. Dessa forma, fornece ao desenvolvedor uma estrutura de segurança
completa para a criação de aplicativos, e para o usuário ou administrador
fornece um conjunto de ferramentas para gerenciar com segurança as aplicações.
O Serviço de Autenticação e Autorização do Java (Java Authentication and
Authorization Service), ou JAAS, é uma API que permite às aplicações escritas
na plataforma J2EE usar serviços de controle de autenticação e autorização sem
necessidade de estarem fortemente dependentes.
A autenticação e a autorização Java Service (JAAS) foi introduzida como um pacote
opcional para o JavaTM 2 SDK, Standard Edition (JDK), v 1.3. JAAS foi agora
integrado ao JDK, v 1.4.
JAAS pode ser usado para duas finalidades:
- Para autenticação de usuários de
forma segura e determinar quem está atualmente em execução de código Java,
independentemente do código que está sendo executado como um aplicativo, applet ou
servlet. - Para a autorização dos usuários, garantindo que eles tenham os direitos de
controle de acesso (permissões) necessários para fazer as ações.
A autenticação JAAS é feita de forma conectada, além de ser extensível. Isso
permite que aplicações Java permaneçam independentes de tecnologias de
autenticação básica.
Exemplo de Autenticação utilizando três arquivos:
-
SampleAcn.java contém o exemplo da classe de aplicação (SampleAcn) e uma outra
classe usada para manipular a entrada do usuário (MyCallbackHandler).
-
SampleLoginModule.java é a classe especificada pelo tutorial do arquivo de
configuração de login como a classe implementar a autenticação desejada
subjacente. SampleLoginModule do usuário de autenticação consiste em
simplesmente verificar se o nome e a senha especificados pelo usuário foram
inseridos - SamplePrincipal.java é uma classe de exemplo que implementa a interface
java.security.Principal. Ele é usado por SampleLoginModule.
No site da Oracle, na seção Java SE Security, podemos encontrar esse exemplo
na íntegra. Você
também pode ver outros exemplos de implementação aqui.
O que é a autorização JAAS?
Estende a arquitetura de segurança existentes em Java que utiliza uma política
de segurança para especificar quais direitos de acesso são concedidos a
execução de código. Essa arquitetura foi introduzida na plataforma Java
2. As permissões são concedidas com base nas características do código:
se o código está vindo e se ele é assinado digitalmente. Exemplo de
código-fonte:
codebase
concessão "file:. / SampleAcn.jar" (
javax.security.auth.AuthPermission permissão
"CreateLoginContext.Sample";
);
Como é realizado a autorização no JAAS?
O usuário deve ser autenticado, conforme descrito no tutorial
de autenticação JAAS.
As principais entradas com base devem ser configuradas de acordo com a política de segurança. O sujeito, que é o resultado da autenticação, deve ser associado com o
contexto atual de controle de acesso. Veja aqui a implementação de um exemplo.
Para usar os módulos PAM com o JAAS, é necessário usar uma bridge, como por
exemplo nos seguintes nos links:
http://sourceforge.net/projects/jaas-pam/
http://jpam.sourceforge.net/
Podemos concluir que para minimizar a probabilidade de falhas de segurança causadas por erro de
programação, os desenvolvedores Java devem aderir às diretrizes recomendadas de
codificação e às orientações para segurança do software.
A escolha da linguagem e dos impactos ou qualquer erro de execução pode ter
desdobramentos graves de segurança, e podem aparecer em qualquer camada da
pilha de software.
Referência