Seguranca em WebServices

Esta é para os usuarios de webservice…

percebi que nao existe padrao de seguranca bem definida para webServices… alguem sabe algum que eu possa usar em minha aplicação ? Quero fazer algum tipo de autenticação para que o cliente possa acessar apenas com autorização…

Claro que existe um padrão. Chama-se WS-Security: http://www-128.ibm.com/developerworks/library/specification/ws-secure/

Olá

Se você usa JAX-WS, dê uma olhada no tutorial JEE5, final capítulo 30 (Example: Basic Authentication with JAX-WS) e leia parte do capítulo 31.

WS-security

A especificação WS-security foi projetada como base de vários modelos de segurança incluindo PKI, Kerberos, SSL. Seus principais mecanismos provem propagação de tokens (ou tickets) de segurança, integridade das mensagens e confidencialidade das mensagens.

As informações de segurança são colocadas na mensagem SOAP dentro de um header com a adição de um ou mais elementos <security> (em geral um para cada receiver). O suporte para autenticação é feito pelo elemento <UsernameToken> de acordo com Web Services Security - UsernameToken Profile 1.0

Exemplo tirado da listagem 3 do primeiro link abaixo:

<SOAP-ENV:Envelope
   xmlns:SOAP-ENV=http://www.w3.org/2003/05/soap-envelope
   xmlns:xenc=http://www.w3.org/2001/04/xmlenc#
   xmlns:xsd=http://www.w3.org/2001/XMLSchema
   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">

  <SOAP-ENV:Header>
    <wsse:Security
        xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd">

      <wsse:UsernameToken Id="7654">
         <wsse:Username>
               Chun
         </wsse:Username>
         <wsse:Password
                  Type="http://docs.oasis-open.org/wss/2004/01/oasis-200401-
                  wss-username-token-profile-1.0#PasswordText">
               senhaChun
          </wsse:Password>
      </wsse:UsernameToken>
    </wsse:Security>
  </SOAP-ENV:Header>
  <SOAP-ENV:Body>
        . . . . . . . 
        . . . . . . .
  </SOAP-ENV:Body>
</SOAP-ENV:Envelope>

Googlando se acha mais alguma coisa:

http://www.devx.com/Java/Article/28816 (veja o exemplo no final e a listagem 3)

http://ws.apache.org/wss4j/

http://xfire.codehaus.org/WS-Security

E mais explicações gerais em
http://www.webservicesarchitect.com/content/articles/apshankar04.asp

http://www-128.ibm.com/developerworks/library/specification/ws-secure/

http://www-128.ibm.com/developerworks/webservices/library/ws-security.html

[]s
Luca

Esse padrão nao é da w3c, é da OASIS.

OASIS é uma instituição que pode cobrar, a quaquer momento, fees sobre padrões depois que eles ja estão aceitos, e isso derruba o movimento open source.

É por isso que as grandes corporações como Microsoft e IBM mudaram de lado e agora estão com esforços somente na OASIS.

Fonte: http://en.wikipedia.org/wiki/Oasis-Open

Se voce é a favor de open source e fim de patentes, nunca utilize nada da OASIS. Ou pelo menos preste atenção em qual licença OASIS o padrão está.

Olá

Com certeza, basta ver schema do exemplo que eu passei

[quote=jmp]OASIS é uma instituição que pode cobrar, a quaquer momento, fees sobre padrões depois que eles ja estão aceitos, e isso derruba o movimento open source.
. . .

Se voce é a favor de open source e fim de patentes, nunca utilize nada da OASIS. Ou pelo menos preste atenção em qual licença OASIS o padrão está.
[/quote]

Na verdade, se a gente ler a mensagem inicial de cada um dos schemas WS-qq coisa, verá que trata-se de uma mensagem de Copyright que NÃO é da OASIS e sim diretamente da IBM, TIBCO, BEA, Microsoft eventualmente alguma outra (que formam a OASIS).

O texto da mensagem mais se resguarda de qualquer ação de responsabilidade por algo de errado que aconteça com o sistema que o usa do que propriamente reserve direitos de cobrar no futuro. A Microsoft, por exemplo, já anunciou publicamente que nunca cobrará por estes padrões.

Este é um dos motivos por que estes padrões WS-qq coisa estão sendo bem aceitos. Outro motivo é que sendo os padrões escritos pelos principais participantes do mercado, fica muito mais seguro fazer integração usando eles.

Acho que neste caso, que também é Open Source porque os schemas são abertos, não existe solução melhor que tenha licença comum às demais soluções Open Source que a gente está acostumado.

[]s
Luca

[quote=Luca] A Microsoft, por exemplo, já anunciou publicamente que nunca cobrará por estes padrões.

[/quote]

A OASIS deixa claro que pode haver cobrança de fee a qualquer momento, e essa é uma das maiores discussões sobre oasis que existe, são produtos patenteados, e o que voce ve nos arquivos é apenas a informação do patent holder.

Os padrões oferecidos pela OASIS tem 3 tipos de licenças, todas as 3 podem cobrar licenças pois como o proprio nome da licença diz: Royalty Free on Limited Terms mode. Esses termos incluem que o patent holder pode cobrar (sem descriminação) fee a qualquer momento.

WS-qq coisa não quer dizer que é a OASIS, w3c tem alguns padrões, que esse sim, são livres.

Olá

Os padrões WS-* são da OASIS. Ver OASIS Standards and Other Approved Work

Os membros e contribuidores da OASIS são tantos que não dá para ficar preocupado.
http://www.oasis-open.org/about/foundational_sponsors.php
http://www.oasis-open.org/about/contributors.php

E na área dos padrões WS-qq coisa da OASIS não há padrões W3C e se sairem agora, precisariam ser muito bons para fazer todo mundo voltar a atrás.

Eu tenho acompanhado esta discussão e por tudo que li não há motivos de maiores preocupações.

Aliás, é só você olhar abaixo o tamanho do Morning Glory, que é o veleiro de competição do Hasso Plattner que é dono da SAP, para ver que ele está bem tranqüilo não só quanto a isto como também quanto a tudo mais na vida. :lol:

[]s
Luca

uma forma de segurança que fiz é criptografar os dados dos objetos serializados em um web service…

é muita gambiarra isso na opinião de vocês? Criptografar os dados de retorno do web service?

[quote=Leozin]uma forma de segurança que fiz é criptografar os dados dos objetos serializados em um web service…

é muita gambiarra isso na opinião de vocês? Criptografar os dados de retorno do web service?[/quote]

Ponto-a-ponto eu não vejo muito problema. Mas se houver algum intermediário que mexa na mensagem pode corromper tudo, pois uma alteração no whitespace pode, digamos, estragar com o teu algoritmo de criptografia (e um intermediário tem o direito de fazer esse tipo de coisa).

Olá

[quote=Leozin]uma forma de segurança que fiz é criptografar os dados dos objetos serializados em um web service…

é muita gambiarra isso na opinião de vocês? Criptografar os dados de retorno do web service?[/quote]

A observação do Rafael foi importante. É comum a mensagem SOAP passar por intermediários que filtram e modificam o header.

Pensando nisto, a especificação WS-Security já tem suporte para diversas tecnologias de encriptação. Veja os links que eu passei.

Atenção: cuidado com a performance quando usar encriptação com WS-Security.

[]s
Luca