Vilmar Santos Nepomuceno Agenda Introdução WSDLs SOAP REST Segurança em Webservices Linguagem de Programação Introdução Desenvolvido a partir do RPC (Remote Procedure Call) em DCE (Distributed Computing Enviroment) essencialmente Unix. MSRPC – Microsoft Primeira geração de Frameworks CORBA (Common Object Request Broker Architecture) e DCOM (Distributed COM) Java RMI (Remote Method Invocation) Segunda Geração Java EE e .NET – Objetos Distribuídos Linguagem de Programação Introdução O DCE/RPC é, em princípio, neutro em linguagem, embora com forte tendência para C/C++. DCE/RPC esconde detalhes de como o transporte é realizado. IDL – Interface Definition Language Linguagem de Programação Introdução O que são webservices? Aplicações tipicamente WEB (Distribuída). HTTP SOAP e REST – Protocolos SOA (Service Oriented Architecture) Linguagem de Programação Introdução O que é Interoperabilidade? O que distingue webservice de Sistemas distribuídos? Infraestrutura aberta: Usa protocolos padrões, são onipresentes e bem compreendidos. Tranferência de Linguagem Pode ser utilizado por clientes em diversas linguagens (interoperabilidade). Design Modular Novos serviços podem ser gerados pela integração com serviços já existentes. Linguagem de Programação Introdução Para que servem os Webservices? Vários sistemas, em várias linguagens, em várias plataformas. Sistemas legados, é preciso reescrever? Basta expor através de um webservice Webservices são inerentementes distribuídos. SEI: Service Endpoint Interface – Declara as operações do serviço SIB: Service Implementation Bean – Implementação do Serviço Linguagem de Programação Introdução Exemplo I Usa Java SE 6 ou superior Escrevendo o código... Publicando o webservice... Testando... O que foi gerado? Testando com um cliente em Java Linguagem de Programação Introdução Praticando.... Criar um webservice para calcular o IMC (Indice de massa corporal). Fórmula: peso/(altura^2) Escrevendo o código... Publicando o webservice... Testando... Criar um cliente para consumir o webservice Linguagem de Programação Introdução Tornando o publicador MultiThread. Linguagem de Programação WSDLs WSDL: WebService Definition Language Para que serve um WSDL? Contrato entre o serviço e seus clientes Fornece: Endpoint do serviço Operações de serviço Tipos de dados para estas operações Exemplo: ts.xml Linguagem de Programação WSDLs Types: Tipos de dados que podem ser usados. Podem ser importados de um XSD (XML Schema Definition). Tipos Padrão: Xsd:string Xsd:long Message: Define as mensagens que implementam o serviço (Requisição/Resposta). Linguagem de Programação WSDLs portType: Apresenta o serviço como operações nomeadas. @WebMethods Bindings: Oferece informações importantes sobre a implementação dos serviços. Transport: mensagens enviadas via HTTP(SMTP). Style: RPC e Document Service: Onde estão disponíveis os serviços. Linguagem de Programação WSDLs O código do webservice deve ser criado e o WSDL obtido automaticamente? Ou Criamos o WSDL para guiar nossa implementação? Mutação da Interface constante Aplicações independentes e não um sistema Distribuído Não orientada a consumidor Pode levar a dependência da liguagem de programação do server. Linguagem de Programação WSDLs Limitações: UDDI – Integração e Descoberta de Descrição Universal Forma de publicação de WSDLs Não suporta qualquer WSDL Semântica do serviço oferecido WSDL-S (Semântica) http://www.w3.org/Submission/WSDL-S/ Linguagem de Programação SOAP Procolo projetado para ser independente de plataforma e linguagem de programação. Interoperabilidade e intercomunicação entre diferentes sistemas. Através da utilização de uma linguagem (XML) e mecanismo de transporte (HTTP) padrões. Linguagem de Programação SOAP Definido pelo consórcio W3C. Protocolo baseado em XML para a troca de informações em um ambiente distribuído (WSDL); Padrão de utilização com Web Services; Normalmente utiliza HTTP como protocolo de transporte; Linguagem de Programação SOAP Envelope: É o elemento raiz do documento XML. Header: É um cabeçalho opcional. Quando utilizado, o Header deve ser o primeiro elemento do Envelope. Body: Este elemento é obrigatório e contém o payload, ou a informação a ser transportada para o seu destino final. O elemento Body pode conter um elemento opcional Fault, usado para carregar mensagens de status e erros retornadas pelos "nós" ao processarem a mensagem. Linguagem de Programação SOAP Exemplo prático de Webservice SOAP Linguagem de Programação SOAP Praticando... Linguagem de Programação REST REST - Representational State Transfer Técnica para sistemas hipermídia originado numa tese de doutorado de Roy Fielding. Não estamos falando de uma biblioteca, plataforma, aplicação, tecnologia, etc. Estamos falando de uma técnica…assim como o MVC ou o Tableless, você usa se quiser. Linguagem de Programação REST E o que o REST tem de diferente do SOAP? O REST defende o fato de que o protocolo HTTP é rico o bastante para proporcionar Webservices, e não há necessidade de criar-se nenhuma abstração para este fim. Para termos um Webservice efetivo precisamos apenas de: um cliente, um serviço, informação, um meio de “encapsular” esta informação (XML, JSON, YAML, etc) e do meio para acessar esta informação (HTTP). PUT, GET, POST, DELETE... Linguagem de Programação REST Então o que o SOAP tem de diferente do REST? SOAP é um padrão aberto que define uma framework de comunicação independente de linguagem e protocolo mas que é baseada em XML. Isso quer dizer que, seja web ou não, em Java ou PHP, a sua informação sempre será transferida de uma forma padronizada, empacotada em SOAP. Obviamente isto requer que tanto seu cliente, quanto seu servidor (serviço) entendam o que é SOAP. Linguagem de Programação REST x SOAP Linguagem de Programação REST Exemplo prático de Webservice REST Linguagem de Programação REST Praticando... Linguagem de Programação Segurança em Webservices Segurança de Baixo Nível Segurança no nível de transporte. Serviços Os Cliente e Webservices se conhecem. Dados transicionados estão codificados. Integridade da mensagem enviada. Linguagem de Programação Segurança em Webservices HTTPS Certificado SSL Linguagem de Programação Segurança em Webservices Autenticação e Autorização do Usuário Autenticação – Usuário informa uma credencial (Login/Senha) para o Webservice. Autorização – Restringir acesso dos usuários. Linguagem de Programação Segurança em Webservices WS-Security Especificação de Segurança publicada pelo grupo OASIS (Organization for the Advancement of Structured Information Standards). WS-Security suporta, integra e unifica vários modelos, mecanismos e tecnologias de segurança em uso no mercado, permitindo que vários sistemas possam interoperar em plataformas e linguagens neutras. Extensão do SOAP para trabalhar com segurança Linguagem de Programação Segurança em Webservices Usando criptografia em WebServices BASE64 Linguagem de Programação Segurança em Webservices Praticando... Linguagem de Programação Referências Livro Java Web Services, Martin Kalin, Ed. Alta Books. http://devedge-temp.mozilla.org/viewsource/2002/soap- overview/index_pt_br.html http://www.profissionaisti.com.br/2009/03/webservices-conhecendoo-rest/ http://saloon.inf.ufrgs.br/twikidata/Docs/OnlineDoc20051217200943/SegurancaWebService_WSSecu rity.pdf Linguagem de Programação Perguntas? Linguagem de Programação Vilmar Santos Nepomuceno