Back-End

2 dez, 2010

Segurança no código Java com JAAS

Publicidade

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.

jaas

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:

  1. 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.
  2. 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

ORACLE
Java SE Security
.