Web service é uma solução utilizada na integração de sistemas e na comunicação entre aplicações diferentes. Com esta tecnologia é possível que novas aplicações possam interagir com aquelas que já existem e que sistemas desenvolvidos em plataformas diferentes sejam compatíveis. Os Web services são componentes que permitem às aplicações enviar e receber dados em formato XML. Cada aplicação pode ter a sua própria "linguagem", que é traduzida para uma linguagem universal, o formato XML.
Tecnologias
As bases para a construção de um Web service são os padrões XML e SOAP. O transporte dos dados é realizado normalmente via protocolo HTTP ou HTTPS para conexões seguras (o padrão não determina o protocolo de transporte). Os dados são transferidos no formato XML, encapsulados pelo protocolo SOAP.
[editar]Segurança
Muitas empresas temiam, no passado, prover funcionalidades na Internet devido ao medo de expor seus dados. Mas com advento dos Web Services elas podem publicar serviços de forma simples e que são totalmente isolados da base de dados.
A segurança dos Web Services é um dos pontos fracos desta tecnologia. O problema não é a falta de mecanismos de segurança mas sim a falta de consenso em qual deve ser o mecanismo a ser adaptado pela tecnologia Web Service, As questões mais relevantes na segurança são as seguintes: - Autenticidade (ter a certeza que uma transacção do Web Service ocorreu entre o servidor e seu cliente; - Privacidade (todas as mensagens trocadas entre o servidor e o cliente não são interceptadas por uma pessoa não autorizada); - Integridade (as mensagens enviadas tanto pelo servidor ao cliente, como o contrário, devem permanecer inalteradas).
A seguir, descrevem-se os principais mecanismos de segurança.
[editar]SSL
O SSL (Secure Socket Layer) [Netscape 1996] quando aplicado a pequenos dispositivos oferece autenticação, integridade de dados e privacidade de serviços. Actualmente, a solução para enviar informação confidencial para Web Services é utilizar um mecanismo de segurança SSL sobre HTTP também conhecido como HTTPS (Hypertext Transfer Protocol Secure). Este mecanismo protege informações confidenciais e é fácil de ser configurado. Tem como desvantagem ser mais lento do que as transacções HTTP não cifradas pelo que não é adequado para taxas de transferências de dados elevadas.
[editar]Xml signature
A XML Signature [IETF e W3C 2000] é uma iniciativa conjunta da IETF (Internet Engineering Task Force) e do W3C para especificar uma sintaxe XML e regras de processamento para criação e representação digital de assinaturas. As vantagens na utilização da XML Signature, ao contrário de outras normas de assinaturas digitais, estão baseadas na independência da linguagem de programação, fácil interpretação humana e independência do fabricante. Esta tecnologia também permite assinar digitalmente subconjuntos de um documento XML.
[editar]Xml encryption
A XML Encryption [IETF e W3C 2002] especifica um processo para cifra de dados e sua representação em formato XML. Os dados podem ser dados arbitrários (incluindo um documento XML), elementos XML ou conteúdos de elementos XML. Um documento XML que utiliza a XML Encryption pode ser visto por qualquer utilizador, mas apenas o proprietário da chave de descodificação conseguirá compreender o conteúdo codificado.
[editar]Ws-security
O WS-Security (Web Services Security) é uma iniciativa conjunta de empresas como Microsoft, IBM e Verisign destinada ao uso da XML-Signature e da XML-Encryption para fornecer segurança às mensagens SOAP. O WS-Security é um esforço destinado a fazer com que os Web Services trabalhem melhor em um ambiente global. O WS-Security também inclui alguns importantes componentes como encaminhamento, confiança e tratamento de transações.
[editar]Saml
O SAML (Security Assertion Markup Language) [OASIS 2001] é uma norma emergente para a troca de informação sobre autenticação e autorização. O SAML soluciona um importante problema para as aplicações da próxima geração, que é a possibilidade de utilizadores transportarem seus direitos entre diferentes Web Services. Isto é importante para aplicações que tencionam integrar um número de Web Services para formar uma aplicação unificada.
[editar]Limitações associados aos Web Services
Apesar da sua grande popularidade [carece de fontes] e relativa simplicidade [carece de fontes], o SOAP tem várias limitações, que por sua vez afetam os Web Services diretamente, por dependerem de tais recursos.
As limitações são descritas em seguida:
Segurança e privacidade – nenhuma das versões do SOAP define qualquer tipo de segurança. Isto é devido ao SOAP utilizar HTTP, mas para implementar mecanismos de segurança ao nível da rede pode utilizar o protocolo SSL no HTTP (também conhecido como HTTPS) para garantir a confidencialidade, a integridade e a autenticação do cliente, do servidor e da comunicação cifrada.
Como não existe um suporte para segurança, que inclui a privacidade, nas normas que compõem os Web Services, tem levado cada projecto a procurar diferentes soluções para resolver o problema da segurança o que se torna incompatível com a promessa de implementar uma normalização a nível global.
Mensagens e encaminhamento – para suportar as funcionalidades das mensagens assíncronas tradicionais
Qualidade de serviço e confiabilidade – para garantir tempos de resposta e detectar excepções
Processamento transaccional – para suportar comunicação transaccional, para associar essa comunicação transaccional com as transacções locais e para participar em transacções distribuídas
Gestão – para controlar o estado e comportamento dos Web Services
Desempenho – para optimizar a execução dos Web Services que tem implicações ao nível do desenho das aplicações, chamadas remotas, características da rede e armazenamento/processamento dos documentos
Interoperabilidade – suportar a interoperação sem problemas é o grande objectivo dos Web Services e do SOAP, ou seja, fornecerem uma plataforma de integração entre aplicações e diferentes linguagens e implementados em qualquer sistema operativo.
Assim esta tecnologia seria uma tecnologia normalizada mas, no entanto, existem rivalidades entre fornecedores. Por exemplo, o AXIS (implementação SOAP do projecto Apache) não é compatível com.Net da Microsoft, por isso gera interfaces em dois formatos, uma para consumo próprio e outra diferente para o.Net ser compatível com o Axis.
Para resolver este problema existe várias abordagens como o SOAPBuilders Interoperability Lab que fornece uma plataforma para testar a interoperabilidade dos produtos.