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