Artigo Java Magazine 16 - Segurança com JAAS

Você precisa estar logado para dar um feedback. Clique aqui para efetuar o login
Para efetuar o download você precisa estar logado. Clique aqui para efetuar o login
Confirmar voto
0
 (0)  (0)

Aplicações que restringem o acesso de usuários ou processos a apenas alguns de seus recursos são muito comuns. Veja nesse artigo como implementar esse tipo de controle de segurança no JAAS.

Esse artigo faz parte da revista Java Magazine edição 16. Clique aqui para ler todos os artigos desta edição

 

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

"

A exibição deste artigo foi interrompida :(
Este post está disponível para assinantes MVP

 
Você precisa estar logado para dar um feedback. Clique aqui para efetuar o login
Receba nossas novidades
Ficou com alguma dúvida?