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.
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
Resultados
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.