Instrues aos Autores de Contribuies para o SIBGRAPI

Transcrição

Instrues aos Autores de Contribuies para o SIBGRAPI
Aplicação web para cadastro e gerenciamento integrado
de usuários com o protocolo LDAP
André Proto¹, Isabela Liane de Oliveira¹, Allan de Brito Mendez Calderon¹, Eli
Israel do Nascimento de Melo¹, Adriano Mauro Cansian¹
1
Instituto de Biociências, Letras e Ciências Exatas (IBILCE) – Universidade Estadual
Paulista “Júlio de Mesquita Filho” (UNESP)
Campus de São José do Rio Preto – SP – Brazil
{andreproto,isabela,allan,adriano}@acmesecurity.org, [email protected]
Abstract. The LDAP protocol, that is used to have access in directory services,
has a great acceptance when is necessary creates accounts in multi-users
environment. This occurs because the protocol makes possible series of
operations and increases the network security. However, it has to spend a lot
of human resources and time making the registration and maintenance in the
database, mainly when the program has to use an already existing database.
This article presents a web application developed to migrate database
information from a generic system to the LDAP database, which originally
doesn’t have these features. The application automatizes it, saving time and
human resources. It helps manage users with a friendly and easy interface.
Resumo. O protocolo LDAP, usado para acessar serviços de diretórios, tem
grande aceitação quando é necessário criar contas de acesso em ambientes
multi-usuários. Isto se deve porque o protocolo possibilita uma série de
operações que contribuem com a segurança da rede. Porém, seu uso é custoso
do ponto de vista humano principalmente quando não reutiliza bases de dados
pré-existentes. Este artigo apresenta a aplicação web desenvolvida para
migrar informações de um banco de dados para a base de dados do LDAP,
que não tem recursos para efetuar isto de forma dinâmica. A aplicação
automatiza tal procedimento, poupando tempo e recursos humanos. Ela efetua
a administração dos dados numa interface amigável e de fácil gerenciamento.
1. Introdução
Em ambientes que disponibilizam contas de acessos aos seus usuários tornou-se
imprescindível investimento em segurança e flexibilidade na manipulação de
informações da base de dados.
O protocolo LDAP - Lightweight Directory Access Protocol [Wahl, Howes e
Kille 1997] é utilizado para obter acesso a serviços de diretórios, tendo a capacidade de
manter as informações relacionadas a um determinado usuário, sincronizadas em todas
as máquinas clientes da rede. Também disponibiliza a padronização e hierarquização
dos dados, que podem ser utilizados por diversas outras aplicações que possuam
clientes LDAP, incrementos na segurança para autenticação e autorização de usuários
com uso de criptografia, esquemas de dados que podem ser expandidos para a
autenticação de sistemas não-Unix.
O uso deste protocolo pode ser considerado relativamente complexo uma vez
que implica no conhecimento dos comandos correspondentes a cada operação que se
deseje realizar. Além do mais, a criação de contas de acesso requer a inserção de
informações na base de dados do LDAP com vistas à identificação e controle do usuário
possuidor da conta. Assim, o gasto de tempo necessário para a realização desta última
operação é adicionado à relativa complexidade inerente ao próprio protocolo.
A aplicação proposta procura contornar estas duas questões através da utilização
de bases de dados previamente existentes, que possam prover informações necessárias à
criação das contas de usuários, e adicionalmente, através da interface web, visa facilitar
a criação e gerenciamento destas contas.
2. Conceitos gerais
Esta seção discutirá conceitos fundamentais das tecnologias utilizadas.
2.1. O protocolo LDAP
O LDAP - Lightweight Directory Access Protocol [Wahl, Howes e Kille 1997] é
um protocolo de acesso a serviços de diretórios que funciona sobre o TCP/IP [Stevens
1994] ou outros serviços orientados a conexão. Possui a capacidade de replicar a
informação visando aumentar a disponibilidade das mesmas e conseqüentemente
reduzir o tempo de resposta. Basicamente, torna possível o acesso a Serviços de
Diretório, em particular, Serviços de Diretório baseados no protocolo X.500
[Hardcastle-Kille 1991].
Um Serviço de Diretório é uma espécie de banco de dados especializado
caracterizado por otimizar acessos de leitura e busca de informações dos usuários. Ele
armazena atributos e informações descritivas e possui técnicas sofisticadas de filtragem.
Figura 1. Esquema do LDAP
O protocolo LDAP é baseado no modelo cliente-servidor. Todas as informações
dos clientes estão armazenadas no servidor, sendo que eles podem se autenticar de
qualquer terminal devidamente configurado. Sua arquitetura é baseada em uma DIT Directory Information Tree [Arkills 2003] (Figura 2), facilitando diversas operações.
Figura 2. Directory Information Tree (DTI)
Os modelos do LDAP são modelos abstratos que descrevem as várias facetas de
um Diretório LDAP. Têm-se, desta forma, quatro modelos, a saber:
Modelo de Informação – Provê as estruturas e tipos de dados necessários para
construir uma DTI.
Modelo de nomes – Define como as entradas e os dados em uma DTI são referenciados
de forma única, conhecida como distinguished name (DN).
Modelo de Funções – Provê meios para acessar os dados em uma DTI. O acesso é
efetuado por operações de autenticação (bindings), de busca e leitura e de atualização.
Modelo de Segurança – Proporciona um mecanismo de autenticação de usuários e
controle do servidor ao acessar os dados de clientes já autenticados (autorização).
O LDAPv3 (LDAP versão 3) permite os seguintes tipos de autenticação:
Anonymous Authentication – Autenticação anônima é o processo de acessar o
diretório usando um distinguished name (DN) e uma senha vazios.
Simple Authentication – Neste método uma DN é transmitida com sua senha em texto
plano para o servidor LDAP.
Simple Authentication over SSL/TLS – Provê autenticação de chave pública baseada
em certificado, comunicação criptografada e assinaturas digitais. O Secure Sockets
Layer (SSL) [Dierks e Allen 1999] permite que as partes negociem o nível de segurança
apropriado. O Transport Layer Security (TLS) [Dierks e Allen 1999] prove integridade
e privacidade dos dados na comunicação de aplicações.
Simple Authentication and Security Layer (SASL) – SASL [Zeilenga 2006] permite
a um cliente e um servidor negociarem o mecanismo de autenticação antes que o
usuário inicie a sessão.
2.2. Ferramentas Java
Em seguida, a descrição das ferramentas Java utilizadas no desenvolvimento da
aplicação web.
Javabeans - Os JavaBeans [Deitel e Deitel 2005] possibilitam aos desenvolvedores de
aplicação, utilizar os benefícios provindos do desenvolvimento rápido de aplicações em
Java, montando componentes predefinidos de software para criar aplicativos e Applets.
Java Server Pages (JSP) - As Java Server Pages (JSP) [Geary 2001] são uma
tecnologia baseada em Java que possibilitam o desenvolvimento de sites com conteúdo
dinâmico. Elas são uma extensão direta dos Java Servlets [Deitel e Deitel 2005] e
permitem que o processo de geração de conteúdo possa ser separado do processo de
apresentação deste conteúdo.
Java Server Faces (JSF) - As Java Server Faces (JSF) [Horstmann e Geary 2005]
constituem um framework para desenvolvimento de aplicações baseadas em Java. Ela
otimiza a construção e gerenciamento de aplicações web. Por meio das JSF, trabalha-se
facilmente com as JSP e JavaBeans para a construção de interfaces web.
3. Metodologia
A aplicação proposta foi desenvolvida baseada nas tecnologias citadas na seção
anterior. A interface com o usuário, que se trata das páginas e seus componentes, foi
construída através da tecnologia Java Server Faces (JSF), que gerou as páginas de
conteúdo dinâmico (JSP). Nesta seção serão abordados alguns aspectos desta aplicação.
3.1 Comunicação com o LDAP
Todas as operações realizadas com o protocolo LDAP, foram feitas através da
Java Naming and Directory Interface (API JNDI) [Sun 2002] (Tabela 1). No entanto,
antes que as operações possam ser realizadas é necessário que se crie um contexto
inicial (Figura 3) através da JNDI que se trata do local onde as informações deverão ser
inseridas, recuperadas ou removidas.
Tabela 1. Operações do LDAP feitas através da JNDI
Operaçõesdo LDAP
Operação correspondente no JNDI
Bind
DirContext. Cria um contexto inicial, ou seja, uma conexão inicial com servidor LDAP
Unbind
DirContext.close(). Libera os recursos usados pelo contexto.
Search
DirContext.Search(), aceita opções de filtros de busca
Modify
DirContext.modifyAttributes(), aceita lista de atributos a serem modificados.
Add
DirContext.bind().
Delete
DirContext.destrovSubcontext().
Figura 3. Atributos para a criação de contexto inicial com o LDAP
3.2 Comunicação com a base de dados
A comunicação com o banco de dados é feita através da Java Data Base
Connectivity (JDBC) [Deitel e Deitel 2005]. Esta, por sua vez, é formada por duas
camadas. A camada mais externa é a JDBC API. Esta API se comunica com a JDBC
Driver API (camada mais interna), enviando a esta última os comandos SQL [Elmasri e
Navathe 2005]. O gerenciador deverá, de forma transparente ao programador,
comunicar-se com os diversos drivers oferecidos pelos vários fornecedores de Sistema
Gerenciador de Banco de Dados (SGBDs). Neste caso, considerando que o SGBD
utilizado foi o MySQL, o driver empregado foi o MySQL Connector/J [MySQL 2007]
que é um driver JDBC do tipo IV, isto é, trata-se de uma biblioteca de Java responsável
por traduzir as solitações JDBC para o protocolo específico do MySQL (Figura 4).
Figura 4. Esquema de conexão MySQL
3.3 Classes
Na Figura 5 é exibida as objectClass [Arkills 2003], atributos e iterações do
programa de acordo com o padrão de diagrama de classes UML – Unified Model
Language [Larman 2007]. Adicionalmente, através da Tabela 2, pode-se ter uma
associação entre os nomes das classes e suas funcionalidades.
Figura 5. Diagrama de Classes do projeto
Tabela 2. Classes e suas funcionalidades
Classe
Funcionalidade
userLdap
Armazena e "transporta" todas as informações referentes aos usuários e suas contas.
ldapConn
Cria um objeto com o formato apropriado para armazenamento na base de dados do LDAP.
ldapBind
Realiza a comunicação com o protocolo LDAP. Através desta classe são realizadas as
inserções, remoções e atualizações de contas de usuário.
passDeal
Lida com as operações relacionadas as senhas de usuários. Dentre estas opções temos:
criação e troca de senhas.
externalCall
Transmite comandos ao sistema operacional.
bankConn
Realiza a comunicação com o banco de dados.
4. Testes e Resultados
Esta seção descreve os testes e resultados da aplicação web desenvolvida. É
importante ressaltar que toda a transmissão das informações de usuários será feita
utilizando-se de criptografia (SSL/TLS), sendo necessário o servidor LDAP estar
adequadamente configurado com o método Simple Authentication over SSL/TLS. O
administrador da aplicação poderá optar por diferentes formas de autenticação. Basta
acessar a página do administrador e escolher o método de autenticação que desejar.
Figura 6. Ações para criação de conta
4.1 Criação e manutenção de contas de usuários
O ambiente inicial da aplicação contém campos onde o usuário deverá inserir
algumas informações básicas (CPF, RG e senha) para a criação de sua conta. Necessitase que estes dados estejam previamente cadastrados no banco de dados da instituição
em questão pois a aplicação verifica se os valores informados conferem com os valores
armazenados no banco de dados. Isto possibilita maior flexibilidade, permitindo um
usuário criar sua própria conta de forma rápida e permite maior confiabilidade nos
dados, pois aproveita-se uma base de dados pré-existente. Se os dados não forem
localizados, este usuário não será inserido na base de dados do LDAP e a aplicação
informará ao usuário sobre o ocorrido. Caso contrário, se a senha estiver correta, a
aplicação validará a senha informada e o cadastro será efetuado na base de dados do
LDAP. Caso a senha não esteja correta o usuário será solicitado a informá-la novamente
(Figura 6). Por meio de uma mensagem o usuário será informado do sucesso da
operação e do nome de usuário definido pela aplicação (Figura 7). É importante lembrar
que a conta deste novo usuário estará bloqueada até que o administrador a desbloqueie.
Figura 7. Conta criada com sucesso
Para atualizar informações de usuários, é necessário que o administrador da
aplicação seja autenticado. À exceção da senha, todas as demais informações do usuário
só poderão ser alteradas pelo administrador da aplicação. O administrador deverá
localizar o usuário cujas informações devem ser alteradas, realizar as alterações
necessárias e atualizar a aplicação para que os dados alterados sejam definitivamente
armazenados. Em relação ao processo de remoção, todas as informações da conta (a ser
removida) na aplicação serão eliminadas. O administrador será questionado acerca da
remoção da pasta do usuário. Ele será informado sobre o sucesso ou não da operação e
caso este último evento ocorra, o motivo será devidamente explicitado através de uma
mensagem.
O usuário poderá alterar a senha mediante a apresentação de seu nome de
usuário e sua senha atual. Feita a autenticação, ele será solicitado a informar por duas
vezes a nova senha. Se as senhas informadas coincidem o usuário será informado sobre
o sucesso da operação. Será solicitado a informar novamente as senhas caso contrário.
4.2 Página do Administrador
Esta página é acessada através da aba “administrador”. O acesso a mesma é
feito mediante a autenticação do administrador. Estes dados são informados na página
de configurações da aplicação. Ela apresenta uma “árvore” que contem todos os grupos
(organizationalUnits), representados pelas “pastas”, contidos na base de dados do
LDAP. Ao se pressionar um ícone correspondente a um grupo, poderá obter-se os
nomes de todos os usuários que estão cadastrados neste grupo. Pressionando-se um
usuário qualquer será exibido, no lado direito da página, todos os dados referentes a ele,
além de uma barra de botões contendo todas as operações que podem ser realizadas
sobre a conta deste usuário (Figura 8).
Nesta página podem ser obtidas ainda algumas informações referentes a base de
dados do LDAP, tal como o número total de usuários e grupos cadastrados na aplicação
e o número de usuários novos. Assim o administrador poderá saber se existem novos
usuários cadastrados, autorizando-os caso o cadastro esteja correto.
Figura 8. Página do administrador
4.3 Página de configurações
Esta seção da página é responsável por exibir todos os dados referentes ao
servidor LDAP (Figura 9). É imprescindível que os dados contidos nesta página estejam
corretos, pois caso contrário todos os acessos à base de dados do LDAP ficarão
comprometidos. Qualquer alteração poderá ser feita e em seguida deverá pressionar-se o
botão “salvar” para que as mesmas possam ser inseridas no arquivo correspondente.
Através da página de configurações também poderá alterar-se atributos relativos
à conexão com a base de dados, tais como: senha de conexão, tabela da base de dados,
campos que devem ser pesquisados para a recuperação de dados, dentre outros.
Figura 9. Configurações do servidor LDAP
5. Conclusão
A aplicação web proposta neste artigo apresentou funcionalidades bastante úteis
na administração de um sistema de contas utilizando o protocolo LDAP. Na Tabela 3 é
possível ver um comparativo de várias funcionalidades, entre a aplicação proposta e as
duas ferramentas de administração LDAP mais populares atualmente.
Como se pode observar através da tabela 3, o projeto desenvolvido não
apresenta algumas funcionalidades que os demais apresentam. Algumas dessas
operações tais como buscas avançadas (buscas utilizando diversos critérios em
conjunto) e inserção de máquinas, podem ser muito úteis para o administrador da
aplicação, muito embora não sejam frequentemente utilizadas. No entanto, chama-se a
atenção para esta aplicação, pelo fato de os outros dois sistemas não permitirem que um
usuário comum (não administrador) possa criar uma conta para si, e pelo fato de os
outros dois não possibilitarem o reaproveitamento de bases de dados que não seja a do
próprio LDAP.
Ainda com relação ao reaproveitamento da base de dados, é possível concluir
que esta aplicação se mostra relativamente flexível acerca dos dados que podem ser
obtidos da base de dados e os dados que o próprio usuário poderá informar durante o
processo de criação de sua conta. Ou seja, caso a aplicação não consiga localizar
algumas informações na base de dados, a criação da conta não fica impossibilitada. A
aplicação ativa alguns campos para que o usuário possa fornecer informações não
recuperadas da base de dados. Assim, mesmo que a base de dados esteja incompleta,
ainda poderá ser reaproveitada para fornecer informações necessárias à criação da
conta.
Tabela 3. Comparativo entre a aplicação proposta, phpLDAPAdmin e Luma
Funcionalidades
Aplicação
phpLDAPAdmin
Luma
Árvore de navegação
X
X
X
Inserção de usuários
X
X
X
Inserção de grupos
X
X
X
Inserção de máquinas
X
X
Cópia de entradas de outros servidores
X
Edição de dados de entradas
X
Buscas
X
Buscas avançadas
X
X
X
X
X
Criação de pasta do usuário
X
Suporte a samba
X
X
Interface Web
X
X
Remoção de entradas
X
X
Criação de conta pelo usuário
X
Recuperação de dados de outras bases de dados
X
X
Sobre as demais funcionalidades da aplicação pode-se dizer que as mesmas
facilitam bastante os encargos do administrador de um sistema de contas de acesso, que
não necessitará manipular diretamente os comandos do protocolo para realizar algumas
operações comuns na administração de sistemas desta natureza. Além do mais, por se
tratar de uma aplicação web, o administrador poderá criar e gerenciar contas de
qualquer lugar e em qualquer plataforma onde tenha acesso à aplicação.
Já está em desenvolvimento a modelagem e implementação de novas
funcionalidades que atendam as necessidades dos administradores, como buscas
avançadas, inserção de máquinas e adaptação de novos schemas [Wahl, Howes e Kille
2003]. O intuito é que em breve esta aplicação web possa ser distribuído sob GPL
(General Public License) afim de que outras comunidades participem de seu
desenvolvimento.
Referências
Wahl, M., Howes, T. e Kille, S. (1997) “RFC 2251 – Lightweight Directory Access
Protocol (v3)”, http://www.faqs.org/rfcs/rfc2251.html, Dezembro.
Stevens, W. R. (1994) “TCP/IP Illustrated: The Protocols”, Volume 1, Addison-Wesley.
Hardcastle-Kille,
S.
E.
(1991)
“X.500
and
http://www.networksorcery.com/enp/rfc/rfc1279.txt, Novembro.
domains”,
Arkills, B. (2003) “LDAP Directories Explained: An Introduction and Analysis.”,
Addison Wesley.
Dierks, T. e Allen, C. (1999) “The
http://www.ietf.org/rfc/rfc2246.txt, Janeiro.
TLS
Protocol
Verson
1.0”,
Zeilenga, K. (2006) “The PLAIN Simple Authentication and Security Layer (SASL)
Mechanism”, http://www.ietf.org/rfc/rfc4616.txt, Agosto.
Geary, D.M. (2001) “Advanced JavaServer Pages”, Prentice Hall PTR.
Deitel, H. M. e Deitel, P. J. (2005) “Java: Como Programar”, Prentice-Hall, 6a Edição.
Horstmann, C. e Geary, D. M. (2005) “Core Java Server Faces”, Alta Books, 1a Edição.
Sun (2002) “LDAP
Naming
Service
Provider
Java
Naming
and
Directory
InterfaceTM
http://java.sun.com/j2se/1.5.0/docs/guide/jndi/jndi-ldap.html.
for
the
(JNDI)”,
Elmasri, R. e Navathe, S. B. (2005) “Sistema de Banco de Dados.”, Pearson AddisonWesley, 4a Edição.
MySQL (2007) “MySQL® Connector/J”, http://www.mysql.com/products/connector/j/.
Larman, C. (2007) “Utilizando UML e padrões: Uma introdução à análise e ao projeto
orientados a objeto.”, Bookman, 3a Edição.
Fundation,
F.
S.
(1991)
“GNU
http://www.gnu.org/licenses/gpl.html, Junho.
General
Public
License”,

Documentos relacionados

manual

manual # cp /tmp/sped/ldap/manager.ldif /etc/ldap/ Para gerar o hash da senha use o seguinte comando: # slappasswd >> /etc/ldap/manager.ldif Dentro do arquivo nano /etc/ldap/manager.ldif copiar o hash ger...

Leia mais

Conteúdo

Conteúdo - Directory User Agent (DUA) - Aplicação Cliente através da qual os clientes (pessoas ou aplicações) efectuam as várias entradas no Directório. - Directory Service Agent (DSA) - É a Aplicação Servi...

Leia mais