Cenários de implementação de serviços com WCF - Parte 2 : Web Services Corporativos

Web Services Corporativos

Olá pessoal, tudo certo?

Vamos falar hoje sobre um cenário muito comum em ambientes de produção nas empresas, que são os Web Services Corporativos. Nesse cenário, encontramos suporte para web services simples baseados em protocolo SOAP ou implementações avançadas sobre os padrões WS-* ( WS-I : Web Services Interoperability Organization ).

Desde o final dos anos 90 encontramos Web Services sendo usados em diversas soluções para a interoperabilidade entre sistemas, permitindo a troca de mensagens entre plataformas heterogêneas. Grande parte dessa produtividade é devido o uso dos documentos WSDL - Web Service Description Language, que descrevem as políticas e o metadado do serviço envolvido.

WCF suporta nativamente a tecnologia de Web Services, em diferentes alternativas de implementação, suportando versões consumidas por clientes JAVA ou outras plataformas não Microsoft, assim como clientes .NET 2.0. Também permite o consumo através de clientes Web Services Enhancements (WSE) 3.0 e clientes .NET 3.x.

Em muitos cenários, é possível migrar ASP.NET Web Services (ASMX) e Web Services WSE 3.0 para serviços WCF sem impacto para os clientes envolvidos.

A figura abaixo apresenta uma visão sobre os tipos de clientes envolvidos no cenário de Web Services Corporativos:

image

Note que é possível combinar diferentes protocolos de acordo com o tipo de cliente envolvido. Além disso, vale lembrar que para compatibilidade histórica, o SOAP 1.1 (ou Basic Profile 1.1) é o transporte indicado para o acesso aos serviços WCF. Assim, para clientes ASMX, usamos o protocolo SOAP 1.1; para clientes ASMX + WSE, usamos o protocolo SOAP 1.2 + WS-Addressing; e para clientes WCF, usamos SOAP 1.2 + WS-Addressing + WS-SecureConversation + WS-ReliableMessaging, para ilustrar.

Sobre os protocolos suportados pelo WCF  temos:

Categoria Protocolo Suportado
  Messaging   SOAP, WS-Addressing, MTOM
  Metadada   WSDL, WS-MetadataExchange, WS-Policy
  Security   WS-Security, WS-SecureConversation, WS-Trust
  Reliability   WS-ReliableMessaging
  Transactions   WS-Coordination, WS-AtomicTransaction

Considerando nossa proposta, vamos dar uma olhada nas principais características e configurações presentes para o cenário de Web Services em WCF. Pensando sobre a segurança aplicada aos Web Services, podemos identificar 3 configurações possíveis:

  1. Web Services com passagem de usuário e senha sobre SSL - Secure Sockets Layer
  2. Web Services com passagem de usuário e senha sobre segurança de mensagens
  3. Web Services com segurança de sessão e mecanismo de sessão confiável ativada

Para cada opção acima, teremos configurações distintas, conforme vemos nas tabelas a seguir:

Web Services com passagem de usuário e senha sobre SSL - Secure Sockets Layer:

Característica Descrição

Hosting

IIS 6 sobre Windows Server 2003, IIS 7 sobre Windows Server 2008

Protocolo de Transporte

HTTPS (SSL)

Protocolo de Mensagens

SOAP + WS-Addressing

Autenticação

Usuário e Senha são fornecidos como parte da mensagem SOAP, baseada em WS-Security e UsernameToken Profile.

Autorização

Um armazenamento de credenciais é normalmente indicado, desde que os usuários não façam parte de um domínio Windows.

Segurança

Um certificado SSL é fornecido para segurança de mensagens.

A figura abaixo ilustra o cenário acima, onde a segurança é obtida através do canal SSL, veja:

image  
by M. L. Bustamente

Web Services com passagem de usuário e senha sobre segurança de mensagens:

Característica Descrição

Hosting

IIS 6 sobre Windows Server 2003, IIS 7 sobre Windows Server 2008

Protocolo de Transporte

HTTP

Protocolo de Mensagens

SOAP + WS-Addressing

Autenticação

Usuário e Senha são fornecidos como parte da mensagem SOAP, baseada em WS-Security e UsernameToken Profile.

Autorização

Um armazenamento de credenciais é normalmente indicado, desde que os usuários não façam parte de um domínio Windows.

Segurança

Uso de protocolo WS-Security sobre certificados X.509 para a segurança de mensagens.

Para ilustrar o cenário acima, onde temos a segurança de mensagens com o uso do WS-Security, veja a figura abaixo:

image 
by M. L. Bustamante

Web Services com segurança de sessão e mecanismo de sessão confiável ativada:

Característica Descrição

Hosting

IIS 6 sobre Windows Server 2003, IIS 7 sobre Windows Server 2008

Protocolo de Transporte

HTTP

Protocolo de Mensagens

SOAP + WS-Addressing

Autenticação

Usuário e Senha são fornecidos como parte da mensagem SOAP, baseada em WS-Security e UsernameToken Profile. WS-SecureConversation é ativado para otimizar a autenticação.

Autorização

Um armazenamento de credenciais é normalmente indicado, desde que os usuários não façam parte de um domínio Windows.

Segurança

Uso de protocolo WS-Security sobre certificados X.509 para a segurança de mensagens.

Reliability (Confiabilidade)

Protocolo WS-ReliableMessaging é utilizado.

Como ilustração, a figura abaixo apresenta o modelo de acesso ao serviço WCF, considerando um Web Services avançado, onde aplicamos uma sessão confiável, certificados e um repositório de credenciais externo, veja:

image 
by M. L. Bustamante

Fonte: Bustamente, M.L., Windows Communication Foundation: Application Deployment Scenarios , May 2008.

Qual opção de configuração devemos adotar? De fato, isso irá depender dos recursos disponíveis e aderência do projeto ao modelo de segurança implementado acima.

Note que cada cenário adiciona aspectos de desempenho, complexidade e experiência do usuário em graus diferentes. Por exemplo, para o cenário mais avançado, temos um impacto no tamanho de mensagens, que deve adicionar os padrões WS-Security, WS-SecureConversation e WS-ReliableMessaging (WS-RM) . Ao mesmo tempo, WS-RM adiciona um mecanismo de confiabilidade na troca de mensagens, com uma sequência de requests/reponses que aumenta o grau de confiança entre cliente e servidor. Esse mesmo tipo de avaliação deve ser feito para as outras configurações, avaliando seus prós e contras.

Desse modo, passamos por alguns aspectos importantes na definição de arquiteturas com Web Services Corporativos e suas configurações.

No próximo post, vamos olhar um cenário relativamente recente: serviços para Web 2.0. Fiquem ligados.

Por enquanto é só! Até o próximo post :)

Waldemir.