Configurando Métodos de Assinatura de Pedido para o Cliente

Utilize as APIs WSSSignature e WSSSignPart para escolher os métodos de assinatura. Os métodos de assinatura de pedido incluem métodos de assinatura, de canonicalização, de compilação e de transformação.

Antes de Iniciar

Primeiro, você deve ter especificado quais partes da mensagem enviada pelo cliente devem ser digitalmente assinadas utilizando as WSS APIs ou configurando os conjuntos de política utilizando o console administrativo.

Sobre Esta Tarefa

A tabela a seguir descreve a finalidade dessas informações. Algumas dessas definições são baseadas na especificação de assinatura XML, que está localizada no seguinte website http://www.w3.org/TR/xmldsig-core.

Tabela 1. Métodos de Assinatura. Utilize os métodos de assinatura para proteger mensagens.
Nome do Método Description
Algoritmo de Canonicalização Canonicaliza o elemento <SignedInfo> antes das informações serem compiladas como parte da operação de assinatura.
Algoritmo de assinatura Calcula o valor de assinatura do elemento <SignedInfo> canonicalizado. O algoritmo selecionado para a configuração do emissor do pedido do cliente deve corresponder ao algoritmo selecionado na configuração do receptor do pedido do servidor.
Método de Transformação Transforma as partes a serem assinadas antes que as informações sejam compiladas como parte da operação de assinatura.
Método de Compilação Calcula o valor de compilação das partes transformadas. O algoritmo selecionado para a configuração do emissor do pedido do cliente deve corresponder aos algoritmos selecionados na configuração do receptor do pedido do servidor.

É possível utilizar as WSS APIs ou configurar os conjuntos de política utilizando o console administrativo para configurar os métodos do algoritmo de assinatura. Se estiver utilizando as WSS APIs, utilize as APIs WSSSignature e WSSSignPart para especificar quais partes das mensagens assinar digitalmente ao configurar o cliente para assinatura do pedido.

As APIs WSSSignature e WSSSignPart concluem as seguintes etapas para configurar os métodos do algoritmo da parte assinada e de assinatura:

Procedimento

  1. Para ligação do gerador, a API WSSSignature especifica o método de assinatura. O WebSphere Application Server suporta os seguintes métodos de assinatura pré-configurados:
    • WSSSignature.RSA_SHA1 (valor padrão): http://www.w3.org/2000/09/xmldsig#rsa-sha1
    • WSSSignature.HMAC_SHA1: http://www.w3.org/2000/09/xmldsig#hmac-sha1
    Para as APIs WSS, o WebSphere Application Server não suporta o método de assinatura digital DSA-SHA1, http://www.w3.org/2000/09/xmldsig#dsa-sha1.
  2. Para ligação do gerador, a API WSSSignature especifica o método de canonicalização. O WebSphere Application Server suporta os seguintes algoritmos de canonicalização pré-configurados:
    • WSSSignature.EXC_C14N (valor padrão): O algoritmo de canonicalização exclusivo, http://www.w3.org/2001/10/xml-exc-c14n#
    • WSSSignature.C14N: O algoritmo de canonicalização inclusivo, http://www.w3.org/2001/10/xml-c14n#
  3. Para ligação do gerador, a API WSSSignPart especifica o método de compilação. 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
  4. Para ligação do gerador, a API WSSSignPart especifica o método de transformação. 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
    • 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
    Para WSS APIs, o WebSphere Application Server não suporta os seguintes algoritmos de transformação:
    • http://www.w3.org/TR/1999/REC-xpath-19991116
    • http://www.w3.org/2002/07/decrypt#XML

Resultados

Utilizando as WSS APIs, você especificou quais métodos de algoritmo são utilizados para assinar digitalmente uma mensagem quando o cliente enviar uma mensagem a um servidor.

Exemplo

O exemplo a seguir é um código de amostra para especificar as informações sobre assinatura, HMAC_SHA1 como método de assinatura, C14N como um método de canonicalização, SHA256 como um método de compilação, e EXC_C14N e TRANSFORM_STRT10 como métodos de transformação:

	  //obter o contexto da mensagem
	  Object msgcontext = getMessageContext();
	  
	  //gerar a instância do WSSFactory
	  WSSFactory factory = WSSFactory.getInstance();		
	  	  
	  //gerar a instância do WSSGenerationContext 
	  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 utilizado para a assinatura 
	  SecurityToken token = factory.newSecurityToken(X509Token.class, callbackHandler);

	  //gerar a instância do WSSSignature 
	  WSSSignature sig = factory.newWSSSignature(token);
	  
	  //configurar o método de canonicalização
	  // PADRÃO: WSSSignature.EXC_C14N
	  sig.setCanonicalizationMethod(WSSSignature.C14N);
	  
	  //configurar o método de assinatura
	  // PADRÃO: WSSSignature.RSA_SHA1
	  sig.setSignatureMethod(WSSSignature.HMAC_SHA1);

	  //configurar a parte especificada por WSSSignPart
	  WSSSignPart sigPart = factory.newWSSSignPart();
	
	  //configurar o método de compilação
 	  // DEFAULT: WSSSignPart.SHA1
	  sigPart.setDigestMethod(WSSSignPart.SHA256);

	  //incluir o método de transformação
	  // DEFAULT: WSSSignPart.TRANSFORM_EXC_C14N
	  sigPart.addTransformMethod(WSSSignPart.TRANSFORM_EXC_C14N);
	  sigPart.addTransformMethod(WSSSignPart.TRANSFORM_STRT10);

    // incluir WSSSignPart no WSSSignature
    sig.addSignPart(sigPart);	  
		  
	  //incluir WSSSignature no WSSGenerationContext
	  gencont.add(sig);
		
	  //gerar o cabeçalho WS-Security
	  gencont.process(msgcontext);

O que Fazer Depois

Depois de configurar o cliente para assinar digitalmente a mensagem e escolher os métodos de algoritmo, é necessário configurar o servidor para verificar a assinatura digital para solicitar a assinatura e para escolher os métodos de algoritmo.

Configure os conjuntos de política utilizando o console administrativo para configurar as informações de verificação de assinatura e os métodos no servidor.


Í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_confwsssignalgorithms
Nome do arquivo: twbs_confwsssignalgorithms.html