Escolar Documentos
Profissional Documentos
Cultura Documentos
1
Bacharel em Sistemas de Informação – FMG/JF
Analista de Sistemas – FMG/JF
Professor Curso Técnico em Informática: Banco de Dados e Programação Web.
gabrielsobreira@gmail.com
2
Especialista em Segurança da Informação – FMG/JF,
Pós Graduando em Redes de Computadores – CES/JF.
Certificado LPIC-1, CLA.
Professor de Redes de Computadores, Sistemas Operacionais e Segurança da Informação.
reis.falexandre@gmail.com
www.reisfa.eti.br
ABSTRACT
The objective of this paper is to present, simply, a web service in Java that allows centralized
authentication systems in an enterprise environment. Commonly authentication is performed
by creating specific users in each of them making it difficult to control manages it in user
access. Initially it presents a fast approach on Java and PHP programming languages,
concepts of a Web Service and also on the LDAP Directory Service. Finally, a case study is
presented with the implementation of a Web Service in Java to provide the authentication
service users, a customer also developed in Java and a client developed in PHP, consuming
both the authentication service provided by Web Service . In this case study, this article will
show the concept and the implementation of centralized authentication, which are separate
systems, developed in different languages, use only a user database to authorize access to a
given system.
This article is recommended for programmers with intermediate knowledge in Java and PHP
technologies, it is assumed that the reader knows how to work with Java web projects using
the Eclipse tool.
Key Words: JAVA, PHP, WEBSERVICE, LDAP, AUTHENTICATION
INTRODUÇÃO
Para possibilitar a interoperabilidade entre sistemas utilizando autenticação
centralizada, serão utilizadas as seguintes ferramentas: Diretório LDAP, que é um repositório
de dados em forma de árvore, cada nó representará um usuário com seus atributos; Web
Service que é uma aplicação web responsável por disponibilizar o serviço de acesso ao
diretório LDAP para ser consumido por clientes, que pode ser desenvolvido em diversas
plataformas e linguagens de desenvolvimento de aplicações. No artigo será abordado de
forma mais detalhada o; Java, uma linguagem de programação amplamente utilizada pela
comunidade de desenvolvedores que proporciona a criação do Web Service de forma simples
e objetiva.
Ao integrar as funcionalidades de cada ferramenta descrita anteriormente, será
possível disponibilizar o serviço de autenticação centralizada, evitando redundâncias de dados
e manutenção de Software.
Esse trabalho está dividido da seguinte forma: Além dessa Introdução, será
apresentada uma abordagem teórica sobre as linguagens de programação JAVA e PHP, que
serão utilizadas no estudo de caso, será apresentado o Web Service e sua importância para o
estudo proposto, conceitos do diretório LDAP, será criado o Web Service de autenticação
centralizada, proposto neste estudo, será criado um cliente Java e um PHP para consumir o
Web Service e por fim as considerações Finais e trabalhos futuros.
Linguagens utilizadas
Nesse tópico será apresentado as ferramentas utilizadas para construção do projeto,
mostrando algumas de suas funcionalidades assim como vantagens de uso das mesmas.
Java
Em 1991 o Java começou a surgir na Sun Microsystems, inicialmente projetado para
facilitar a convergência entre um computador e equipamentos eletrônicos como os
eletrodomésticos por exemplo. Depois acabou sendo adaptado para a internet e uma das
grandes diferenças da linguagem de programação Java para as demais é que qualquer
hardware ou equipamento eletrônico que possa executar uma máquina virtual conseguirá
executar o Java, ou seja, o código do programa é escrito apenas uma vez e pode ser executado
em qualquer equipamento eletrônico (LUCKOW, 2010).
Neste artigo, o Java foi escolhido para ser a linguagem de programação a ser utilizada
na codificação e desenvolvimento do Web Service de autenticação centralizada, pois, além
do seu diferencial que permite-o ser executado em qualquer plataforma, é a linguagem base
do curso de pós graduação em desenvolvimento web da Universidade Federal de Juiz de Fora.
Caracteristicas do java
As principais características de Java são as seguintes:
Concisa e simples: não contém redundâncias e é fácil de entender, implementar e usar.
Parecida com C++ para facilitar compreensão por grande parte de programadores. É uma
evolução de C++: não suporta aritmética de ponteiros, registros, etc.
Orientada a objetos: suporta os principais conceitos de orientação a objetos. Favorece
extensibilidade e reusabilidade.
Provê acesso a Internet/WWW: Contém bibliotecas especiais que possibilitam o
trabalho com protocolos TCP/IP como HTTP e FTP. Permite acesso a URLs.
Robusta: fortemente tipada. Programas são confiáveis. Reduz imprevistos em tempo
de execução: variáveis são automaticamente inicializadas, uso disciplinado de ponteiros,
rotinas devem ser chamadas corretamente, etc.
Portável: aplicações funcionam do mesmo jeito em qualquer ambiente.
Completamente especificada. Não contém aspectos dependentes da implementação: o
tamanho dos tipos é fixo para qualquer projeto, etc.
Segura: restrições de acesso a arquivos (applets), manipulação de ponteiros, etc.
Implica que não é útil para desenvolver certas aplicações como `device drivers', etc.
Concorrente: suporta aplicações concorrentes: multithreads e monitores.
Por outro lado as principais características da implementação atual de Java são as
seguintes:
Independente de plataforma: código gerado pelo compilador funciona em qualquer
ambiente. Geração de bytecode que pode ser interpretado para qualquer arquitetura e sistema
operacional tendo o sistema Java. Facilita distribuição de software.
Interpretada: facilita desenvolvimento exploratório. Perde em eficiência.
Compilada: utilizando compiladores, bytecodes podem ser traduzidos em tempo de
execução para código de máquina.
PHP
PHP (um acrônimo recursivo para "PHP: Hypertext Preprocessor", originalmente
Personal Home Page) é uma linguagem interpretada, livre, usada originalmente apenas para o
desenvolvimento de aplicações presentes e atuantes no lado do servidor e capazes de gerar
conteúdo dinâmico na World Wide Web. O código é interpretado no lado do servidor pelo
módulo PHP, que também gera a página web a ser visualizada no lado do cliente. A
linguagem evoluiu, passou a oferecer funcionalidades em linha de comando, e além disso,
ganhou características adicionais, que possibilitaram usos adicionais do PHP, não
relacionados a web sites. É possível instalar o PHP na maioria dos sistemas operacionais,
gratuitamente. Concorrente direto da tecnologia ASP pertencente à Microsoft, o PHP é
utilizado em aplicações como o MediaWiki, Facebook, Drupal, Joomla, WordPress, Magento
e o Oscommerce.
Criado por Rasmus Lerdorf em 1995, o PHP tem a produção de sua implementação
principal — referência formal da linguagem, mantida por uma organização chamada The PHP
Group. O PHP é software livre, licenciado sob a PHP License, uma licença incompatível com
a GNU General Public License (GPL) devido a restrições no uso do termo PHP.
O PHP foi selecionado a ser uma linguagem de programação que utiliza a codificação para o
desenvolvimento do cliente que consumirá o serviço de autenticação do Web Service, a escolha
de linguagens diferentes para o servidor e o cliente é justamente o foco deste estudo, ou seja,
aplicações distintas, desenvolvidas em linguagens de diferentes paradigmas, utilizarão o
mesmo serviço para realizar a autenticação de seus usuários.
Principais características editar
A linguagem PHP é uma linguagem de programação de domínio específico, ou seja,
seu escopo se estende a um campo de atuação que é o desenvolvimento web, embora tenha
variantes como o PHP-GTK. Seu propósito principal é de implementar soluções web velozes,
simples e eficientes. A seguir umas de suas principais características:
● Velocidade23 24 25 e robustez26 27 .
● Estruturado e orientação a objetos.
● Portabilidade - independência de plataforma - escreva uma vez, rode em qualquer
lugar.
● Tipagem dinâmica.
● Sintaxe similar a C/C++ e o Perl.
● Open-source.
● Server-side (O cliente manda o pedido e o servidor responde em página HTML)(PHP
2015)
WEB SERVICE
Atualmente existem várias plataformas de desenvolvimento de Software e, além disso,
os mais modernos não são criados para serem executados isoladamente, pelo contrario, um
bom sistema deve interoperar com outros, que podem ser escritos em diferentes linguagens.
Com isso, o Web Wervice que é neutro de linguagem é uma ótima opção para fazer a
interoperabilidade entre sistemas desenvolvidos em diferentes plataformas de
desenvolvimento de Software.
O Web Service é uma aplicação web oferecida através de HTTP (Hyper Text
Transport Protocol), que pode ser aplicada ou executada em diferentes tipos de dispositivos,
portanto é uma aplicação distribuída, que poderá ser consumida por clientes que precisam do
resultado que é retornado por ele (KALIN, 2010).
Ainda segundo Newcomer (2002), um serviço web tem um nível de abstração acima
de qualquer software existente, tais como servidores de aplicação, .NET, Java, PHP, dentro
outros. O Web Service trabalha em um nível de abstração semelhante ao da Internet e é capaz
de superar qualquer sistema operacional, plataforma de hardware ou linguagem de
programação.
Os serviços são disponibilizados e aplicações distintas conseguem acessar estes
recursos enviando e recebendo dados em formato XML (Extensible Markup Language). O
XML surgiu do SGML (Standard Generalized Markup Language), e uma de suas
características é a separação de formato e conteúdo, ou seja, o formato é descrito de forma
independente do conteúdo, portanto, o conteúdo de um documento poderia sair em vários
formatos sem alterá-lo. Este princípio característico das linguagens de marcação é aplicado ao
Web Service através da separação dos esquema, que descreve as estruturas e tipos de dados,
incluindo informação semântica útil mapeando o documento para várias linguagens de
programação (NEWCOMER, 2002).
DIRETÓRIO LDAP
O diretório é um serviço de armazenamento hierárquico de informações e utilizado
como local de armazenamento de informações relativas aos usuários de uma rede corporativa.
Segundo Trigo (2007), administrar uma rede com diversos servidores pode ser
complicado; por exemplo, para manter as informações de autenticação de cada um deles
sincronizada, quando um novo usuário é criado na rede, é preciso configurar as regras de
acessos deste novo cliente em cada servidor e, a situação é a mesma, quando um outro é
desligado; é necessário excluir as regras em cada servidor para que ele não tenha mais acesso;
isso é questão de segurança.
Portanto, podemos definir que diretório é árvore de nós e cada nó consisti de vários
atributos e seus valores, é uma base de dados otimizada para busca de informações e é usado
para indicar direções, ou seja, através do diretório é obtido o caminho para chegar ao que se
procura e este caminho pode ser referenciado com nomes, ao invés de endereços lógicos. Sua
função principal é facilitar a recuperação dessas informações armazenadas. (MORAES,
2009).
O LDAP foi criado devido à grande necessidade de integração das informações que
aplicações distintas utilizam para realizar suas operações. É um protocolo que define um
método para acesso e atualização de dados em um diretório. É um protocolo para pesquisar e
atualizar diretórios. (SUNGAILA, 2007).
CRIANDO O WEB SERVICE
Neste capítulo serão apresentados os passos utilizados para criar o Web Service
conforme estudado. Será utilizada a ferramenta Eclipse na versão Kepler para a programação
e o JBoss 7 como servidor web, ambos devem estar configurados e prontos para rodar um
projeto web. Não é o objetivo mostrar a configuração de cada servidor aqui utilizado,
portando, não será apresentado detalhes sobre a configuração dos mesmos.
Nesse ambiente fora utilizado três sistemas operacionais diferentes, um Debian
GNU/Linux contendo a JBoss 7, um Windows server 2012 com Active Directory e um
Windows 8 para servir como máquina de desenvolvimento e testes. A configuração de cada
um desses ativos irá interferir no desempenho, dependendo do número de acessos
simultâneos. No ambiente atual o Windows Server 2012 e o Debian foram virtualizados,
disponibilizando os recursos mínimos para seu uso.
A seguir é apresentado um exemplo de criação e usabilidade de um WebService
utilizando o Eclipse. Observe nas Figuras 1 e Figura 2 os passos necessários para que seja
criado um novo projeto.
.
package br.edu.exemplowebservice.model;
package br.edu.exemplowebservice.dao;
import java.util.Hashtable;
import javax.naming.Context;
import javax.naming.NamingEnumeration;
import javax.naming.NamingException;
import javax.naming.directory.Attribute;
import javax.naming.directory.Attributes;
import javax.naming.directory.SearchControls;
import javax.naming.directory.SearchResult;
import javax.naming.ldap.InitialLdapContext;
import javax.naming.ldap.LdapContext;
import br.edu.exemplowebservice.model.UsuarioAD;
public class UsuarioAdDAO {
private static UsuarioAdDAO INSTANCE;
private UsuarioAdDAO() {
}
public static UsuarioAdDAO getInstance() {
if (INSTANCE == null) {
INSTANCE = new UsuarioAdDAO();
}else{
return INSTANCE;
}
public UsuarioAD authenticate(String user, String pass) {
ClassLoader prevCl = Thread.currentThread().getContextClassLoader();
ClassLoader classcl = this.getClass().getClassLoader();
Thread.currentThread().setContextClassLoader(classcl);
String returnedAtts[] = { "cn", "displayName","mail" };
String searchFilter = "(&(objectClass=user)(sAMAccountName=" + user + "))";
String ip = "Informe o ip do servidor AD";
String dominio = "Informe o dominio do servidor AD";
String sintaxe = "Informe a sintaxe de busca AD";
package br.edu.exemplowebservice.web;
import javax.jws.WebMethod;
import javax.jws.WebParam;
import javax.jws.WebService;
import javax.jws.soap.SOAPBinding;
import javax.jws.soap.SOAPBinding.Style;
import br.edu.exemplowebservice.dao.UsuarioAdDAO;
import br.edu.exemplowebservice.model.UsuarioAD;
@WebService
@SOAPBinding(style = Style.RPC)
public class AutenticacaoWS {
@WebMethod
public UsuarioAD autentica(@WebParam(name = "login") String login,
@WebParam(name = "senha") String senha) {
Nesta seção é criado um cliente JAVA para consumir o serviço disponibilizado pelo
Web Service.
package br.edu.cliente.webservice;
import java.net.URL;
} catch (Exception e) {
System.out.println("Erro: " + e.getMessage());
}
}
}
Nesta seção é criado um cliente PHP para consumir o serviço disponibilizado pelo
Web Service.
Primeiro é criado um formulário html simples, apenas com os campos usuário e senha,
conforme mostrado na figura 8.
Figura 8: Formulário Html para autenticação.
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<title>Teste do Web Service Autenticação</title>
</head>
<body>
<center>
<h1>Teste do Web Service Autenticação</h1>
<form method="post" action="resultado.php">
Informe o login:
<input type="text" name="login"/><br />
Informe a senha:
<input type="password" name="senha"/><br />
<input type="submit" value="Enviar" />
</form>
</center>
</body>
</html>
O action do form envia dos dados para o arquivo resultado.php, mostrado a seguir, que
faz a comunicação com o webservice por meio da classe SoapClient, chama o método
autentica passando como parâmetro o usuário e a senha informada, recebe um retorno do
webservice para validar a autenticação.
<?php
try{
?>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<title>teste</title>
</head>
<body>
<center>
<h1>Resultado da Autenticação</h1>
<?php
$xml = $cliente->autentica($_POST['login'],$_POST['senha']);?>
<?php
}else{
echo 'Dados inválidos';
} ?>
<br />
<a href="index.php"> Voltar </a>
</center>
</body>
</html>
Diante das duas tecnologias populares e de grande potencial (php e java), como
demonstrado ao decorrer desse artigo. Todo cuidado deve ser tomado ao apontar qual delas é
superior. É normal seguir o modismo e as tendências da época sem ter um prévio
conhecimento que justifique a escolha de alguma.
O intuito desse trabalho foi demonstrar as vantagens e facilidades adquiridas ao
utilizar o Web Service, apresentando as ferramentas, englobando suas funcionalidades e
conceitos.
Já o SOAP é um padrão que, combinado com as especificações do Web Service, pode
garantir questões de QoS (Quality of Service), segurança, transações e outras questões
encontradas em integrações de maior complexidade, uma vez que seus protocolos são bem
especificados.
Finalizando o trabalho, pode-se definir que nem sempre a melhor tecnologia
empregada dentro de um contexto será a melhor opção para qualquer outro, devendo sempre
obter o conhecimento do cenário para que se possa utilizar a ciência que mais for adequada.
REFERÊNCIAS
KALIN, Martin. Java Web Services: Implementando. 1.ed. Rio de Janeiro: Alta Books,
2010. 293 p.
LUCKOW, Décio Heinzelmann; MELO, Alexandre Altair. Programação Java para a Web:
Aprender a desenvolver uma aplicação financeira pessoal com as ferramentas mais modernas
da plataforma Java. São Paulo: Novatec, 2010. 638 p.
MORAES, Gabriel Sobreira. Integração de Bases de Autenticação Baseada em Serviço de
Diretório LDAP. Monografia de Graduação, Faculdade Metodista Granbery, Juiz de Fora,
Brasil, 2009.
SUNGAILA, M. Autenticação Centralizada com OpenLDAP. São Paulo: Novatec, 2007.
TRIGO, C. H. OpenLDAP: uma abordagem integrada. São Paulo: Novatec, 2007.
NEWCOMER, Eric. Understanding Web Services: XML, WSDL, SOAP, and UDDI.
Boston: Addison Wesley, 2002.