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:
Partes Assinadas | Description |
---|---|
keyword | Inclui as partes assinadas usando palavras-chave. O WebSphere Application Server suporta as seguintes palavras-chave para as partes assinadas:
|
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:
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:
|
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:
|
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:
|
Procedimento
Resultados
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);
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.