PDF.imagem_pdf.jpg 

Segurança com JAAS

Aplicações que restringem o acesso de usuários ou processos a apenas alguns de seus recursos são muito comuns; implementar esse tipo de controle de segurança, no entanto, não é nada fácil – e fazê-lo de forma que a aplicação seja independente da tecnologia de segurança utilizada é ainda mais difícil. É exatamente isso que o JAAS (Java Authentication and Au­thorization Service) se propõe a resolver.

Conceitos

Antes de descrever a API de autenticação e autorização de Java, precisamos apresen­tar alguns conceitos:

• Autenticação é o processo de identifica­ção de um “usuário” (pessoa, processo etc.) em um sistema. Isto é feito comparando-se as credenciais passadas pelo usuário com as esperadas pelo sistema. O método mais comum de autenticação é o uso de senhas, mas pode-se utilizar várias outras técnicas, como biometria.

• Autorização é o processo de verifica­ção dos direitos que um usuário possui para acessar/manipular um determinado recurso do sistema. Um exemplo seria res­tringir o acesso de um cliente de um banco a apenas sua própria conta.

Iniciando a autenticação

Ao iniciar o processo de autenticação com JAAS, a aplicação deve criar um objeto do tipo javax.security.auth.login.LoginContext, pas­sando para ele um nome de configuração de módulos de login (que são implementações da interface javax.security.auth.spi.LoginModule). Essa configuração é definida em um arqui­vo-texto simples, externo à aplicação (veja detalhes adiante).

 

O LoginContext é responsável por armazenar as informações do usuário; o LoginModule, por obter essas informações.

Veja a Listagem 1. Note que, antes de instanciar o LoginContext, foi criado um javax.security.auth.Subject. Um Subject
armazena as informações relacionadas a uma entidade colhidas no processo de autenticação, por exemplo: o nome, o login e a senha de um usuário. Para isso, o Subject usa um ou mais obje­tos java.security.Principal, representando
identidades e, opcionalmente, credenciais públicas ou privadas.


Listagem 1. Exemplo de autenticação: JMMain.java

package jm.jaas;

import java.security.*;

import javax.security.auth.*;

import javax.security.auth.callback.*;

import javax.security.auth.login.*;

// Usando o JAAS para fazer o login e o logout de um usuário

public class JMMain {

  public static void main(String[] args) {

    ?// Informaçoes e objetos necessários para o login

    String nomeConfiguracao = “JavaMagazine”;

    Subject subject = new Subject();

    CallbackHandler callbackHandler = new JMCallbackHandler();

    // Cria LoginContext

    LoginContext context = null;

    try {

      context = new LoginContext(

          nomeConfiguracao, subject, callbackHandler);

    }

    catch (LoginException le) {

      ?System.out.println(“Erro criando LoginContext. Mensagem:“  

         + le.getMessage());

      System.exit(1);

    }

    // Realiza o login do usuário na aplicação

    try {

      context.login();

 System.out.println(“Login bem sucedido”);

...

Quer ler esse conteúdo completo? Tenha acesso completo