Skip to content

Simple App setting up a SOAP web service to study how it works.

Notifications You must be signed in to change notification settings

dauid64/soap_app_example

Repository files navigation

SOAP

Este é um serviço SOAP simples implementado utilizando Sprint Boot para estudar funciona o protocolo SOAP.

Características

  • Protocolo formal e padronizado
  • Funciona via HTTP.
  • Utiliza XML para a troca de mensagens.
  • É orientado a funções (operações).
  • Inclui mecanismos de segurança integrados (WS-Security com suporte SSL)
  • Melhor para transações críticas e sistemas complexos
  • Overhead maior (mais verboso)
  • Stateless por padrão, mas pode ser configurado para manter estado
  • Não tem suporte a caching nativo

WS-Security (Segurança)

É um padrão em nível de mensagem baseado na proteção de mensagens SOAP por meio de assinatura digital XML, confiabilidade por meio de criptografia XML e propagação de credenciais por meio de tokens de segurança.

Os mecanismos de segurança da web tradicionais, como HTTPS, podem ser insuficientes para gerenciar os requisitos de segurança de todos os cenários de serviço da web. Por exemplo, quando um aplicativo envia uma mensagem SOAP utilizando HTTPS, a mensagem é protegida somente para a conexão HTTPS, significando durante o transporte da mensagem do solicitante de serviços (o cliente) e o serviço. No entanto, o aplicativo pode requerer que os dados da mensagem sejam protegidos além da conexão HTTPS, ou mesmo além da camada de transporte. Ao proteger os serviços da web no nível de mensagem, a segurança no nível de mensagem será capaz de atender esses requisitos expandidos.

O cliente inclui no cabeçalho da mensagem SOAP informações de segurança que se aplicam a essa mensagem específica. Quando a mensagem for recebida, o terminal da web em serviço, usando as informações de segurança no cabeçalho, verifica a mensagem de segurança e a valida com relação à política. Por exemplo, o terminal em serviço pode verificar a assinatura da mensagem e verificar se a mensagem não foi violada. É possível incluir informações de assinatura e de criptografia nos cabeçalhos da mensagem SOAP, bem como outras informações, tais como, tokens de segurança para identidade (por exemplo, um certificado X.509) que estão ligados ao conteúdo da mensagem SOAP.

XSD (XML Schema Definition)

Arquivo que define a estrutura e regras de validação de um documento XML

Funções principais:

  • Define tipos de dados (string, integer, boolean, etc.)
  • Especifica elementos obrigatórios e opcionais
  • Valida a estrutura do XML
  • Define restrições e padrões

WSDL (Web Services Description Language)

Arquivo que descreve completamente um serviço SOAP (como usá-lo, quais operações existem, quais dados enviar/receber).

Componentes principais:

  • types - Define tipos de dados (usa XSD internamente)
  • message - Define as mensagens de entrada e saída
  • portType - Define as operações do serviço
  • binding - Define como as mensagens são transmitidas (SOAP via HTTP)
  • service - Define a localização do serviço (URL)

Analogia:

  • XSD = contrato de dados (formato do XML)
  • WSDL = manual de instruções do serviço (como chamar operações)

Quando é utilizado

  • se você precisar integrar ou estender sistemas legados que já tenham APIs SOAP, talvez seja melhor continuar com o SOAP.
  • APIs privadas para requisitos corporativos internos (como relatórios de dados para fins de conformidade) podem se beneficiar das medidas de segurança mais rígidas do WS-Security no SOAP.
  • Os usuários da sua API exigem consistência e integridade de dados rigorosas em uma cadeia de transações? Por exemplo, transações financeiras exigem que um lote inteiro de atualizações de dados falhe se até mesmo uma única atualização falhar.

Como utilizar

  • Especificação xsd está no caminho /src/main/resources/META-INF/schemas/countriesWs.xsd
  • WSDL pode ser acessado em http://localhost:8080/services/countries.wsdl
  • tem um exeplo de requisição no arquivo request.xml que pode ser usado com curl da seguinte forma:
curl --header "Content-Type: text/xml" -d @request.xml http://localhost:8080/services 2>/dev/null | xmllint --format -

About

Simple App setting up a SOAP web service to study how it works.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages