10 de set. de 2010

Segurança no código Java com JAAS

Introdução

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, infra-estrutura de chaves públicas, comunicação segura, autenticação e controle de acesso. Fornece ao desenvolvedor uma estrutura de segurança completa para a criação de aplicativos, e para o usuário ou administrador 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 autorização Java Service (JAAS) foi introduzido como um pacote opcional para o JavaTM 2 SDK, Standard Edition (JDK), v 1.3. JAAS foi agora integrada no 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 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árias para fazer as ações.

A autenticação JAAS é feita de forma conectada e é extensível. Isso permite que aplicações Java permaneçam independente 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 desejado 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 integra clique aqui

Outros exemplos de implementação:
http://www.guj.com.br/article.show.logic?id=184

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

• Principais entradas com base deve ser configurado na 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 a implementação de um exemplo  clique aqui

Para usar os módulos PAM com o JAAS é necessário usar uma bridge, como por exemplo uma das seguintes:

http://sourceforge.net/projects/jaas-pam/
http://jpam.sourceforge.net/

    Conclusão

    Para minimizar a probabilidade de falhas de segurança causadas por erro de programação, os desenvolvedores Java devem aderir a diretrizes recomendadas de codificação e 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ências:
    ORACLE – Java SE Security. Disponível em http://www.oracle.com/technetwork/java/javase/tech/index-jsp-136007.html . Acesso em 10 de setembro de 2010

    Nenhum comentário:

    Postar um comentário