Modelo de Programação da Web Services Security API

O modelo de programação do servidor de aplicativos fornece a WSS API (interfaces de programação de aplicativos do Web Services Security) para proteger mensagens SOAP.

O modelo de programação API é um modelo de programação de interface que se baseia nos padrões do Web Services Security Versão 1.1, mas o projeto também inclui suporte para o Web Services Security Versão 1.0 para proteger mensagens SOAP. A implementação do modelo de programação da API WSS é uma versão simplificada, que se baseia em uma antiga proposta-rascunho do JSR-183, que é o JSR para definir a ligação da Java™ API para Segurança de Serviços da Web. Pelo projeto, como o código do aplicativo é programado para a interface, qualquer código do aplicativo programado com a implementação de software livre deve poder ser executado no WebSphere Application Server com mudanças mínimas ou sem nenhuma mudança.

O modelo de configuração para serviços da Web também foi reprojetado a partir de um modelo do descritor de implementação para um modelo do conjunto de políticas. O Web Services Security pode ser ativado usando um conjunto de políticas que é configurado usando o console administrativo ou usando a WSS API para configuração. As funções fornecidas pelas configurações do conjunto de políticas são as mesmas funções suportadas pela API WSS para o tempo de execução da Segurança de Serviços da Web. No entanto, a política de segurança que é definida utilizando os conjuntos de política possui uma prioridade superior sobre a WSS API. Quando a WSS API e o conjunto de política forem utilizados no aplicativo, o comportamento padrão é que a política de segurança do conjunto de política seja reforçada e a WSS API seja ignorada. Para utilizar a WSS API no aplicativo, é necessário certificar-se de que não exista nenhum conjunto de política anexado ao aplicativo ou aos recursos do aplicativo ou certificar-se de que não exista política de segurança no conjunto de política anexado.

É possível ainda usar seus aplicativos JAX-RPC existentes com o Web Services Security; entretanto, esses aplicativos não podem obter vantagem das funções do Web Services Security Versão 1.1, como configurar a política de segurança usando um conjunto de políticas, aprimoramentos do desempenho do filtro OM, WSS API, Web Services Secure Conversation (WS-SecureConversation), token Kerberos e a chave SHA-1 associada para proteção de mensagem e identificar a propagação e os recursos do Web Services Trust (WS-Trust).

Para obter vantagem das funções do Web Services Security Versão 1.1, você deve gravar novamente um aplicativo JAX-RPC como um aplicativo JAX-WS, reconfigurar manualmente as restrições de segurança para um conjunto de política e desempenhar a migração do código das SPIs com base em DOM para as SPIs com base em OM.

Por exemplo, ao utilizar o modelo de programação JAX-WS, o design melhorado da estrutura do token que pode ser conectado permite que a mesma implementação de segurança seja utilizada para a API e os conjuntos de políticas. A estrutura utiliza o JAAS Login Module e o JAAS Callback Handler para criação e validação de token.

Os diagramas a seguir ilustram diferenças entre os modelos de programação.

Figura 1. Arquitetura de Token que pode ser Conectado Usando o Modelo de Programação JAX-WS
Arquitetura de token que pode ser conectado usando o modelo de programação JAX-WS
Figura 2. Arquitetura de Token que pode ser Conectado Usando o Modelo de Programação JAX-RPC
Arquitetura de token plugável usando o modelo de programação JAX-RPC

O que é Suportado ao Usar as WSS APIs

A WSS API só pode ser usada no cliente. É possível utilizar o clienteJava SE 6, o cliente J2EE Application ou um cliente de servidor (um provedor de serviços que atua como cliente), utilizando a API para proteger a mensagem SOAP com a segurança do nível de mensagem.

É necessário ter conhecimento de WSS (Web Services Security) para utilizar as WSS APIs. Antes de usar a WSS API, lembre-se que:
  • São interfaces baseadas em Java.
  • São implementadas usando um modelo factory (WSSFactory).
  • Suporta padrões WS-Security Versão 1.0 e 1.1, que inclui os perfis de token de Nome do usuário e X.509, Versões 1.0 e 1.1.
  • São muito centrados em XML.
  • Incluem um projeto orientado a objetos que simplifica as APIs.
  • São orientadas a tarefas e permitem cenários de uso comum como: assinatura do corpo e criptografia do conteúdo do corpo da mensagem SOAP.
  • São flexíveis e extensíveis e permitem estender o suporte do tipo de token.
  • São baseadas na estrutura do provedor e permitem o uso de diferentes modelos de dados a serem usados, como: AXIOM ou DOM.
  • Fornecem ao programador do aplicativo melhor controle e flexibilidade na aplicação de WSS em seus aplicativos.

Os valores padrão para a WSS API são predefinidos e fazem parte do tempo de execução do Web Services Security. Os valores padrão são fornecidos para:

  • A duração do registro de data e hora
  • O algoritmo de assinatura, o algoritmo de canonicalização, o método digest, o algoritmo de transformação, o método de referência do token de segurança e as partes assinadas como o corpo do SOAP, os cabeçalhos e o registro de data e hora do Web Services.
  • O algoritmo de criptografia da chave, o algoritmo de criptografia de dados, o método de referência de token de segurança e as partes criptografadas como o conteúdo de corpo do SOAP.

A validação de assinatura tem valores padrão semelhantes aos da assinatura (informações sobre assinatura). Da mesma maneira, a descriptografia tem valores padrão semelhantes aos da criptografia.

O que não é Suportado ao Usar as WSS APIs

A WSS API fornecida com o servidor de aplicativos não suporta a seguinte função:

  • O modelo de programação do aplicativo JAX-WS, que significa que aplicativos JAX-RPC (JSR-109) não são suportados.
  • A WSS API está disponível na troca de mensagem síncrona do aplicativo cliente do JAX-WS. Entretanto, a WSS API não é suportada para o cliente assíncrono.
  • O suporte da WSS API está disponível para o solicitante e não para o provedor.
  • O modelo de programação semântica da asserção de identidade não é suportado na WSS API porque a asserção de identidade não faz parte do padrão do Web Services Security Versão 1.0. Entretanto, é possível usar a WSS API para incluir a semântica de Asserção de Identidade no processamento de token.

Cenários de WS-Trust e WS-SecureConversation

Há várias maneiras de proteger as mensagens SOAP do WS-Trust:
  • Utilizando a política de auto-inicialização definida no conjunto de política.
  • Utilizando a WSS API, que suporta o WS-SecureConversation.
  • Ativando a política dinâmica do provedor para que o cliente possa recuperar a política do lado do provedor no tempo de execução.

Um aplicativo utilizaria a WSS API para adquirir um token de contexto de segurança para a conversação segura baseada em API. O serviço de confiança do WebSphere Application Server fornece a um aplicativo a capacidade de solicitar um token de segurança para acesso a um serviço. O escopo e o foco do serviço de confiança é apenas para um WebSphere Application Server Security Context Token (SCT) para WS-SecureConversation.

Os cenários de WS-SecureConversation e WS-Trust se concentram nas funções de interoperabilidade, como interação de configuração e de tempo de execução de vários componentes. Você utilizaria a WSS API para proteger o RST e o RSTR de auto-inicialização para adquirir o token do contexto de segurança do serviço de confiança. Depois de adquirir o token do contexto de segurança, um Token de Chave Derivada é criado usando a WSS API. Em seguida, o Token de Chave Derivada pode ser usado para assinatura e criptografia.

Há duas condições ao usar a WSS API para proteger a mensagem SOAP com o Web Services Security:
  • Geração da mensagem SOAP de proteção, que está no código de aplicativo do gerador de pedido.
  • Consumo da mensagem SOAP protegida, que está no código de aplicativo do consumidor de resposta.

Em ambos os casos, uma classe de exceção Java com.ibm.websphere.wssecurity.wssapi.WSSException só será fornecida se um erro for encontrado.

Contexto de Segurança do Cliente de Serviços da Web

Quando o cliente JAX-WS chama os serviços da Web, o contexto de segurança atual que é construído pelo manipulador de segurança é armazenado no objeto RequestContext. Por padrão, o contexto de segurança no ambiente de tempo de execução dos serviços da Web do JAX-WS é reconstruído para a próxima chamada de solicitação de serviços da Web. É possível preservar o contexto de segurança para chamadas de serviços da Web subsequentes. Um exemplo disso é um cenário em que a política de segurança requer que o cliente envie um token de segurança de nome de usuário com o nome do usuário e a senha. Quando o cliente envia o primeiro pedido para chamar o serviço, você é solicitado a digitar o nome do usuário e a senha necessários. O nome do usuário e a senha são salvos em um token SecurityToken de Nome do Usuário em um Assunto no contexto de segurança. Para evitar a solicitação do mesmo nome de usuário e senha novamente em chamadas de pedidos subseqüentes, você pode preservar o contexto de segurança. Há dois métodos de preservar o contexto de segurança: 1) configurar o tempo de execução do cliente para preservar automaticamente o contexto de segurança do cliente para chamadas de pedidos subseqüentes; ou 2) preservar o contexto de segurança manualmente.

Para configurar o ambiente de tempo de execução do cliente JAX-WS para preservar automaticamente o contexto de segurança, configure a propriedade de sistema Java com.ibm.websphere.wssecurity.context.management como true. Quando essa propriedade de sistema é verdadeira, o tempo de execução do cliente JAX-WS copia o contexto de segurança construído pelo manipulador de segurança para o RequestContext automaticamente, e o contexto é utilizado para chamadas de pedidos subseqüentes.

Para preservar manualmente o contexto de segurança, utilize o seguinte código de amostra:
// First request
Service svc = Service.create(...);
svc.addPort(...);
Dispatch<String> dispatch = svc.createDispatch(...);
Map<String, Object> requestContext = dispatch.getRequestContext();
String response = dispatch.invoke(body.toString());

Object securityContext = requestContext.get(com.ibm.wsspi.websvcs.Constants.WEBSPHERE_SECURITY_CONTEXT);

// Pedido subseqüente

Dispatch<String> dispatch = svc.createDispatch(...);
Map<String, Object> requestContext = dispatch.getRequestContext();
Object securityContext = requestContext.put(com.ibm.wsspi.websvcs.Constants.WEBSPHERE_SECURITY_CONTEXT, securityContext);

Í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_wss_api
Nome do arquivo: cwbs_wss_api.html