Relacionamento da Segurança de Serviços da Web e a Segurança do Java Platform, Enterprise Edition

Esse artigo descreve o relacionamento entre o modelo de Segurança de Serviços da Web (segurança no nível de mensagem) e o modelo de segurança do Java™ Platform, Enterprise Edition (Java EE). Também inclui informações sobre as verificações de autorização baseada nas funções do Java EE.

Importante: Há uma distinção importante entre a Versão 5.x e a Versão 6 e aplicativos posteriores. As informações suportam somente aplicativos Versão 5.x que são usados com o WebSphere Application Server Versão 6.0.x e posterior. As informações não se aplicam aos aplicativos Versão 6.0.x e posterior.

O WebSphere Application Server suporta o Java Specification Requests (JSR) 101 e o JSR 109. Os JSRs 101 e 109 definem serviços da web para a arquitetura Java EE para que você possa desenvolver e executar os serviços da web na arquitetura do componente Java EE.

Importante: A Segurança de Serviços da Web faz referência à especificação Segurança de Serviços da Web: Segurança de Mensagens SOAP. Para obter mais informações, consulte Web Services Security support.

Protegendo Serviços da Web com a Segurança do WebSphere Application Server (Segurança Java EE Baseada em Função)

É possível proteger os serviços da web usando a infraestrutura existente de segurança do WebSphere Application Server, a segurança Java EE baseada em função e segurança Secure Sockets Layer (SSL) no nível de transporte.
Figura 1. Fluxo de Mensagens SOAP Usando a Infraestrutura de Segurança ExistenteFluxo de mensagens SOAP usando a infraestrutura de segurança existente

A porta de serviços da web pode ser protegida usando segurança Java EE baseada em função. O emissor de serviços da web envia os dados de autenticação básica usando o cabeçalho HTTP. SSL (HTTPS) pode ser utilizado para proteger o transporte. Quando o WebSphere Application Server recebe a mensagem SOAP, o contêiner de web autentica o usuário (neste exemplo, user1) e define o contexto de segurança para a chamada. Depois que o contexto de segurança é definido, o servlet do roteador SOAP envia a solicitação à implementação dos serviços da web (a implementação pode ser JavaBeans ou arquivos de enterprise bean). Para implementações de enterprise bean, o contêiner de EJB executa uma verificação de autorização em relação à identidade de user1.

A porta de serviços da web também pode ser protegida usando a função Java EE. Em seguida, a autorização é executada pelo contêiner de web antes que a solicitação SOAP seja despachada para a implementação de serviços da web.

Protegendo Serviços da Web com Segurança de Serviços da Web no Nível da Mensagem

Também é possível proteger os serviços da web usando a Segurança de Serviços da Web no nível da mensagem. Neste caso, pode-se assinar digitalmente ou criptografar uma certa parte da mensagem. A segurança de serviços da Web também suporta a propagação de tokens de segurança dentro da mensagem SOAP. O cenário a seguir supõe que a porta de serviços da web não é protegida com segurança Java EE baseada em função e que o enterprise bean é protegido com segurança Java EE baseada em função.

Figura 2. Fluxo de Mensagens SOAP Usando a Segurança de Serviços da WebFluxo de mensagens SOAP usando a Segurança de Serviços da Web

Nesse caso, a porta de serviços da web não é protegida com segurança Java EE baseada em função. O mecanismo de serviços da web processa a mensagem SOAP antes que o cliente envie a mensagem para a porta de serviços da web. O tempo de execução de Segurança de Serviços da Web age sobre as restrições de segurança, tais como assinatura digital, criptografia ou geração (e inserção) de um token de segurança no cabeçalho SOAP. Neste caso <wsse:Token_do_Nome_do_Usuário> é gerado utilizando user1 e a senha. No lado do servidor (recepção), os serviços da web processam a mensagem recebida e a Segurança de Serviços da Web impõe as restrições de segurança. Essa imposição inclui certificar-se de que as mensagens estejam corretamente assinadas, criptografadas e decriptografadas, autenticar o token de segurança e configurar o contexto de segurança com a identidade autenticada (neste caso, user1 é a identidade autenticada). Por último, a mensagem SOAP é despachada para a implementação de serviços da web (se a implementação for um arquivo de enterprise beans, o contêiner de Enterprise JavaBeans (EJB) desempenhará uma verificação de autorização com relação a user1). SSL também pode ser utilizado nesse cenário.

Misturando os Dois

O segundo cenário mostra que a Segurança de Serviços da Web pode complementar a segurança Java EE baseada em função. Por exemplo, SSL pode ser ativado no nível de transporte para fornecer um canal protegido. Além disso, se a implementação de serviços da web for um arquivo de enterprise beans, será possível alavancar a autorização J2EE baseada em função ao executar verificações de autorização. O tempo de execução de segurança de serviços da Web alavanca a infra-estrutura de segurança para definir a identidade autenticada no contexto de segurança. A identidade autenticada pode ser usada na chamada de recebimento de dados para recursos Java EE (ou outros tipos de recursos).

Existem conseqüências sutis de combinar os dois cenários. Por exemplo, se o transporte HTTP estiver enviando dados de autenticação básica com user1 e a senha no cabeçalho HTTP, mas <wsse:UsernameToken> com user99 e letmein também estiverem inseridos no cabeçalho HTTP. Nos cenários anteriores, há duas autenticações executadas. Uma autenticação é executada pelo contêiner de web para autenticar user1 e a outra é executada pela Segurança de Serviços da Web para autenticar user99. O tempo de execução de Segurança de Serviços da Web é executado após a execução do contêiner da web e user99 é a identidade autenticada que é configurada no contexto de segurança.

A Segurança de Serviços da Web também pode propagar tokens de segurança do emissor para o receptor do SOAP sobre um transporte Java Message Service (JMS).

Verificações de Autorização do Java EE Baseadas em Função

Não existe um padrão de autorização para serviços da web. Contudo, a IBM em conjunto com a Microsoft Corporation publicaram juntas um roteiro de white paper de segurança para os serviços da web chamado Security in a Web Services World: A Proposed Architecture and Roadmap, em que há uma proposta para a especificação WS-Authorization. Entretanto, a especificação WS-Authorization não foi publicada.

A implementação existente de Segurança de Serviços da Web baseia-se na especificação do Web Services para Java EE ou da especificação Java Specification Requirements (JSR) 109. A implementação do Web Services Security usufrui das verificações de autorização baseadas em função do Java EE. Para obter informações conceituais, consulte autorização baseada em função. Se você desenvolver um serviço da Web que exija verificações de autorização de nível do método, deverá usar beans de sessão stateless para implementar seu serviço da Web. Para obter mais informações sobre o uso dos beans de sessão stateless para implementar um serviço da web, leia os tópicos "Implementando Aplicativos de Serviços da Web com JAX-WS" ou "Implementando Aplicativos de Serviços da Web com JAX-RPC," dependendo do seu modelo de programação. Leia também sobre a proteção de aplicativos do enterprise bean. Se você desenvolver um serviço da Web que seja implementado como um servlet, poderá usar autorização de alta granularidade ou baseada em URL no contêiner da Web. Entretanto, nessa situação, não é possível usar a identidade do Web Services Security para verificações de autorização. Em vez disso, a identidade do transporte pode ser utilizada. Se você utilizar SOAP sobre HTTP, a identidade estará no transporte HTTP.


Ícone que indica o tipo de tópico Tópico de Conceito



Ícone de registro de data e hora Última atualização: last_date
http://www14.software.ibm.com/webapp/wsbroker/redirect?version=cord&product=was-nd-mp&topic=cwbs_wssecurityj2ee
Nome do arquivo: cwbs_wssecurityj2ee.html