Incluindo Partes Assinadas Usando a API WSSSignPart

É possível proteger as mensagens SOAP, sem usar os conjuntos de política para configuração, utilizando as WSS APIs (Web Services Security APIs). Para configurar partes que serão assinadas para as ligações do gerador de pedidos (cliente), use a API WSSSignPart para proteger a integridade das mensagens e configurar os métodos de algoritmo de compilação e transformação. A API WSSSignPart faz parte do pacote com.ibm.websphere.wssecurity.wssapi.signature.

Antes de Iniciar

Você pode usar a API WSS ou configurar os conjuntos de políticas usando o console administrativo para configurar as informações de assinatura. Para oferecer segurança às mensagens SOAP usando as informações de assinatura, conclua uma das seguintes etapas:

  • Configure as informações de assinatura
  • Configure as partes assinadas, conforme necessário.

Sobre Esta Tarefa

O WebSphere Application Server utiliza as informações sobre assinatura para o gerador padrão assinar partes da mensagem e utiliza a assinatura digital XML com os algoritmos existentes de transformação e compilação (por exemplo, SHA1 ou TRANSFORM_EXC_C14N).

As informações de assinatura especificam as restrições de integridade que são aplicadas às mensagens geradas. As partes assinadas são utilizadas para proteger a integridade das mensagens. Você pode especificar as parte assinadas para incluir na proteção de integridade da mensagem.

A tabela a seguir mostra as partes assinadas requeridas quando a restrição de segurança de assinatura digital (integridade) for definida:

Tabela 1. Informações de Partes Assinadas. Utilize as partes assinadas para proteger mensagens.
Partes Assinadas Description
keyword Inclui as partes assinadas usando palavras-chave. O WebSphere Application Server suporta as seguintes palavras-chave para as partes assinadas:
  • BODY
  • ADDRESSING_HEADERS
  • TIMESTAMP
Os cabeçalhos do WS-Addressing não são criptografados, mas podem ser assinados.
xpath Inclui as partes assinadas requeridas usando uma expressão XPath.
header Inclui o cabeçalho, especificado por QName, como uma parte assinada.
timestamp Inclui um objeto WSSTimestamp como uma parte assinada. Quando especificadas, as informações do registro de data e hora especificam quando a mensagem será gerada e expirada.

Partes de mensagens diferentes podem ser especificadas na proteção de mensagem para pedido no gerador. WSSSignPart permite incluir um algoritmo de transformação, configurar um método de compilação e objetos como destinos, especificar um elemento e as partes assinadas, como o corpo da mensagem SOAP, o cabeçalho de WS-Addressing e as informações do registro de data e hora.

Para informações de assinatura, determinados comportamentos padrão ocorrem. A forma mais simples de usar a API WSSSignPart é usar o comportamento padrão (veja o código de exemplo). Os comportamentos padrão das partes assinadas incluem:

Tabela 2. Comportamento Padrão de Partes Assinadas. Várias características das partes assinadas são configuradas por padrão.
Decisões de Assinatura Comportamento Padrão
Quais partes da mensagem SOAP assinar

O WebSphere Application Server suporta as seguintes partes da mensagem SOAP a serem assinadas e utilizadas para proteção de mensagens:

  • WSSSignature.BODY
  • WSSSignature.ADDRESSING_HEADERS
  • WSSSignature.TIMESTAMP
Qual método de compilação usar

Configura o método de algoritmo de compilação. O algoritmo do método de compilação especificado no elemento <DigestMethod> é utilizado no elemento <SigningInfo>.

O WebSphere Application Server suporta os seguintes métodos de compilação pré-configurados:
  • WSSSignPart.SHA1 (valor padrão): http://www.w3.org/2000/09/xmldsig#sha1
  • WSSSignPart.SHA256: http://www.w3.org/2001/04/xmlenc#sha256
  • WSSSignPart.SHA512: http://www.w3.org/2001/04/xmlenc#sha512
Quais algoritmos de transformação usar Inclui o método de transformação. O algoritmo de transformação é especificado no elemento <Transform> e especifica o algoritmo de transformação para a assinatura.

O WebSphere Application Server suporta os seguintes algoritmos de transformação pré-configurados:

  • WSSSignPart.TRANSFORM_EXC_C14N (valor padrão): http://www.w3.org/2001/10/xml-exc-c14n#
  • WSSSignPart.TRANSFORM_XPATH2_FILTER: http://www.w3.org/2002/06/xmldsig-filter2

    Use esse método de transformação para garantir a conformidade com o BSP (Basic Security Profile).

  • WSSSignPart.TRANSFORM_STRT10: http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-soap-message-security-1.0#STR-Transform
  • WSSSignPart.TRANSFORM_ENVELOPED_SIGNATURE: http://www.w3.org/2000/09/xmldsig#enveloped-signature

Procedimento

  1. Para ativar a Segurança dos Serviços da Web usando a API WSS (WSSSignPart), primeiro certifique-se de que o servidor de aplicativos está instalado.
  2. Use a API WSSSignPart para assinar as partes da mensagem e especifique os algoritmos em uma mensagem SOAP. O processo da API WSS para partes assinadas segue estas etapas:
    1. Usa WSSFactory.getInstance() para obter a instância de implementação da API WSS.
    2. Cria a instância WSSGenerationContext a partir da instância WSSFactory.
    3. Cria SecurityToken a partir de WSSFactory para configurar a chave para assinatura.
    4. Cria WSSSignature a partir da instância WSSFactory usando SecurityToken.
    5. Cria WSSSignPart a partir da instância WSSFactory.
    6. Configura a parte a ser assinada e os métodos de compilação ou transformação especificados pela etapa g ou h, se o padrão não for apropriado.
    7. Configura o método de compilação, se o padrão não for apropriado.
    8. Configura o método de transformação, se o padrão não for apropriado.
    9. Inclui WSSSignPart em WSSSignature. Depois que qualquer WSSSignPart estiver configurada para WSSSignature, as partes padrão a serem assinadas, que serão especificadas em WSSSignature, serão ignoradas.
    10. Inclui WSSSignature em WSSGenerationContext.
    11. Chama WSSGenerationContext.process() com SOAPMessageContext.

Resultados

Você concluiu as etapas para configurar as partes assinadas para a seção do gerador dos arquivos de ligações. Se houver uma condição de erro, uma WSSException será fornecida. Em caso de êxito, WSSGenerationContext.process() será chamado e a segurança dos serviços da Web será aplicada à mensagem SOAP.

Exemplo

O seguinte exemplo fornece o código de amostra que usa todos os métodos que são definidos na API WSSSignPart:

// Obter o contexto da mensagem
   Object msgcontext = getMessageContext();

// Gerar a instância do WSSFactory (etapa: a)
   WSSFactory factory = WSSFactory.getInstance();		

// Gerar a instância WSSGenerationContext  (etapa: b)
   WSSGenerationContext gencont = factory.newWSSGenerationContext();
		
// Gerar o manipulador de retorno de chamada
   X509GenerateCallbackHandler callbackHandler = new 
      X509GenerateCallbackHandler
      "",
      "dsig-sender.ks",
      "jks", 
      "client".toCharArray(), 
      "soaprequester", 
      "client".toCharArray(), 
      "CN=SOAPRequester, OU=TRL, O=IBM, ST=Kanagawa, C=JP", null);

// Gerar o token de segurança usado para a assinatura  (etapa: c)
   SecurityToken token = factory.newSecurityToken(X509Token.class, callbackHandler);

// Gerar a instância WSSSignature (etapa: d)
   WSSSignature sig = factory.newWSSSignature(token);

// Configurar a parte especificada por WSSSignPart  (etapa: e)
   WSSSignPart sigPart = factory.newWSSSignPart();

// Configurar a parte especificada por WSSSignPart  (etapa: f)
   sigPart.setSignPart(WSSSignature.BODY);

// Configurar o método de compilação especificado por WSSSignPart  (etapa: g)
   sigPart.setDigestMethod(WSSSignPart.SHA256);

// Configurar o método de transformação especificado por WSSSignPart  (etapa: h)
   sigPart.setTransformMethod(WSSSignPart.TRANSFORM_STRT10);

// Incluir a parte especificada por WSSSignPart  (etapa: i)
   sig.addSignPart(sigPart);

// Incluir WSSSignature em WSSGenerationContext  (etapa: j)
   gencont.add(sig);
		
// Gerar o cabeçalho de WS-Security  (etapa: k)
gencont.process(msgcontext);
Nota: X509GenerationCallbackHandler precisa da senha da chave porque a chave pública é usada para assinatura.

O que Fazer Depois

Use a API WSSVerifyPart ou configure os conjuntos de políticas usando o console administrativo para verificar as partes assinadas no consumidor.


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



Í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=twbs_confsignaturepartgen
Nome do arquivo: twbs_confsignaturepartgen.html