Artigo Java Magazine 16 - 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. 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

Clique aqui para ler esse artigo em PDF. 

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();"

[...] continue lendo...
Ebook exclusivo
Dê um upgrade no início da sua jornada. Crie sua conta grátis e baixe o e-book

Artigos relacionados