Configurando Informações sobre Assinatura Utilizando APIs WSS

Você pode configurar informações de assinatura para ligações do gerador de pedidos do cliente (emissor). As informações de assinatura são utilizadas para assinar e validar partes de uma mensagem, incluindo o corpo da mensagem SOAP, as informações do registro de data e hora e o token do Nome do Usuário. Para configurar o cliente para assinatura de pedidos, especifique quais partes da mensagem assinar digitalmente ao configurar o cliente.

Antes de Iniciar

O WebSphere Application Server utiliza a assinatura digital XML com algoritmos existentes como RSA, HMAC e SHA1. A assinatura XML define muitos métodos para descrever informações-chave e permite a definição de um novo método. Antes de concluir estas etapas, familiarize-se com a assinatura digital XML para assinar e verificar assinaturas digitais para conteúdo digital.

Sobre Esta Tarefa

Pela inclusão da assinatura XML em mensagens SOAP, obtém-se o seguinte: integridade e autenticação da mensagem. Integridade refere-se à assinatura digital, enquanto a confidencialidade refere-se à criptografia. A integridade diminui o risco de modificação de dados durante a transmissão dos dados pela Internet. O WebSphere Application Server utiliza as informações sobre assinatura para o gerador padrão para assinar partes da mensagem, como o corpo, o registro de data e hora e o token do nome do usuário.

Para informações de assinatura, especifique o seguinte:
  • Quais partes da mensagem devem ser assinadas.
  • As informações de chave referidas pelas informações de chave nas chaves de assinatura.
  • Os algoritmos de assinatura.

O WebSphere Application Server fornece valores padrão para ligações. No entanto, um administrador deve modificar os padrões para um ambiente de produção.

A API WSSSignature configura as seguintes partes como partes da assinatura:

Tabela 1. Partes da assinatura pré-configuradas. Utilize as informações sobre assinatura para validar partes de uma mensagem.
Parte Description
Objeto do Token de Segurança Esse objeto autentica o cliente. Se essa opção for especificada, a mensagem será assinada. É possível assinar digitalmente a mensagem utilizando um token de segurança se um método de autenticação da configuração de login for selecionado.
Objeto WSSTimestamp Esse objeto inclui um registro de data e hora em uma mensagem. O time stamp determina se a mensagem é válida com base na hora em que a mensagem é enviada e, em seguida, recebida.
Objeto da parte WSSSignature Esse objeto inclui as partes da assinatura em uma mensagem.
Cabeçalho SOAP e QName como Destino Esta parte da assinatura inclui o cabeçalho, especificado por QName, como uma parte da verificação.

As APIs WSS permitem usar palavras-chave ou uma expressão XPath para especificar as partes da mensagem que serão assinadas. O WebSphere Application Server suporta o uso das seguintes palavras-chave:

Tabela 2. Palavras-chave de Assinatura Suportadas. Informações chave são utilizadas para especificar quais partes de uma mensagem estão assinadas.
Palavra-chave Referências
ADDRESSING_HEADERS Os cabeçalhos WS-Addressing (Web Services Addressing).
BODY O corpo da mensagem SOAP. O corpo é a parte dos dados do usuário da mensagem.
TIMESTAMP Informações do registro de data e hora de criação e expiração.

A API WSS (Web Services Security) é usada para configurar as informações de assinatura para a seção do gerador de pedido (cliente) do arquivo de ligação. Para configurar as informações de assinatura no cliente, use as APIs WSS ou configure os conjuntos de políticas para assinar usando o console administrativo.

Ao configurar usando as APIs WSS, as APIs WSSSignature e WSSSignPart, conclua as seguintes etapas para especificar quais partes da mensagem assinar digitalmente ao configurar o cliente para assinatura do gerador de pedidos:

Procedimento

  1. A API WSSSignature inclui as partes requeridas da mensagem SOAP para assinar digitalmente. Uma senha ou expressão XPath pode ser usada para especificar partes da criptografia requeridas.
  2. A API WSSSignature configura o algoritmo do método de assinatura. O método de assinatura padrão é RSA_SHA1. O WebSphere Application Server suporta os seguintes algoritmos pré-configurados:

    O WebSphere Application Server não suporta o seguinte algoritmo para DSA-SHA1: http://www.w3.org/2000/09/xmldsig#dsa-sha1. Você não pode usar o algoritmo DSA-SHA1 se quiser ser compatível com o BSP (Basic Security Profile).

    Qualquer elemento ds:SignatureMethod/@Algorithm em uma assinatura tem como base uma chave simétrica e deve ter um valor de RSA-SHA1 ou HMAC-SHA1.

    O algoritmo especificado para a configuração do gerador de pedidos deve corresponder ao algoritmo especificado para a configuração do consumidor do pedido.

  3. A API WSSSignature configura o método de canonicalização. O método de assinatura padrão é EXC_C14N. O WebSphere Application Server suporta os seguintes algoritmos pré-configurados:
    • O URI do algoritmo de canonicalização exclusivo, EXC_C14N: http://www.w3.org/2001/10/xml-exc-c14n#.
    • O URI do algoritmo de canonicalização inclusivo, C14N: http://www.w3.org/2001/10/xml-c14n#.

    O algoritmo de canonicalização especificado para o gerador deve corresponder ao algoritmo para o consumidor.

  4. A API WSSSignature inclui um token de segurança. A API inclui informações sobre o token de segurança usado para a assinatura, como:
    • A classe do token de segurança.
    • O manipulador de retorno de chamada
    • O nome da configuração de login do JAAS.
  5. A API WSSSignature configura o tipo de token de segurança e o tipo de referência do token. O WebSphere Application Server suporta as seguintes referências de token pré-configuradas:
    • SecurityToken.REF_STR

      Representa a referência do token de segurança como um tipo de referência do token.

    • SecurityToken.REF_KEYID

      Representa a referência do identificador de chaves como o tipo de referência do token.

    • SecurityToken.REF_EMBEDDED

      Representa a referência integrada como um tipo de referência do token.

    • SecurityToken.REF_THUMBPRINT

      Representa a referência de impressão digital como um tipo de referência do token.

  6. Se SecurityToken.REF_KEYID for configurado como o tipo de referência do token, a API WSSSignature configurará o tipo de assinatura das informações de chave e as informações de chave referidas pelas referências de informações de chave. O WebSphere Application Server suporta o seguinte:
    • Especificação de que o elemento KeyInfo não está assinado.
    • Especificação de que o elemento <KeyInfo> inteiro é assinado.
    • Especificação de que os elementos filhos <Keyinfochildelements> do elemento <KeyInfo> são assinados.

    Se você não especificar um dos tipos de assinatura anteriores, o WebSphere Application Server especificará que o elemento <KeyInfo> inteiro é assinado, por padrão.

    Se você selecionar Keyinfo ou Keyinfochildelements e selecionar http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-soap-message-security-1.0#STR-Transform como o algoritmo de transformação em uma etapa subseqüente, o WebSphere Application Server também assinará o token referenciado.

    O tipo de assinatura de informações de chave para o gerador deve corresponder ao tipo de assinatura para o consumidor.

  7. A API WSSSignature especifica se a confirmação de assinatura será ou não solicitada. A especificação de OASIS WS-Security (Web Services Security) Versão 1.1 define o uso da confirmação de assinatura. Se você estiver usando o WS-Security Versão 1.0, esta função não estará disponível.

    O valor de confirmação da assinatura será armazenado para validar a confirmação de assinatura depois que a mensagem recebida for retornada. Esse método será chamado se a mensagem de resposta tiver de anexar a confirmação de assinatura na mensagem SOAP.

  8. A API WSSSignPart especifica a referência da parte. A referência de parte especifica quais partes da mensagem serão assinadas digitalmente.

    A referência de parte faz referência à parte da mensagem que é digitalmente assinada. O atributo de parte se refere ao nome do elemento <Integrity> quando o elemento <PartReference> é especificado para a assinatura. É possível especificar vários elementos <PartReference> no elemento <SigningInfo>. O elemento <PartReference> tem dois elementos filhos quando é especificado para a verificação de assinatura: <DigestTransform> e <Transform>.

  9. A API WSSSignPart especifica o algoritmo do método 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 algoritmos de compilação pré-configurados:
    • http://www.w3.org/2000/09/xmldsig#sha1
    • http://www.w3.org/2001/04/xmlenc#sha256
    • http://www.w3.org/2001/04/xmlenc#sha512
  10. A API WSSSignPart especifica o algoritmo de transformação. O algoritmo de transformação é 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:
    • http://www.w3.org/2001/10/xml-exc-c14n#
    • http://www.w3.org/TR/1999/REC-xpath-19991116

      Não utilize esse algoritmo de transformação se quiser ser compatível com o BSP (Basic Security Profile). Em vez disso, utilize http://www.w3.org/2002/06/xmldsig-filter2 para assegurar conformidade.

    • http://www.w3.org/2002/06/xmldsig-filter2
    • http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-soap-message-security-1.0#STR-Transform
    • http://www.w3.org/2002/07/decrypt#XML
    • http://www.w3.org/2000/09/xmldsig#enveloped-signature
    O algoritmo de transformação selecionado para o gerador deve corresponder ao algoritmo de transformação selecionado para o consumidor.
    Importante: Se ambas as condições a seguir forem verdadeiras, o WebSphere Application Server assinará o token referenciado:
    • Você selecionou anteriormente a opção Keyinfo ou Keyinfochildelements
    • Selecione http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-soap-message-security-1.0#STR-Transform como o algoritmo de transformação.
  11. Se você configurar as informações de assinatura do cliente e do servidor corretamente, mas receber um erro Corpo do Soap não Assinado ao executar o cliente, talvez seja necessário configurar o agente. Configure os conjuntos de política utilizando o console administrativo para configurar as mesmas sequências de agentes para o serviço da Web no servidor, que processa o pedido e envia a resposta de volta.

    As informações atuantes no cliente e no servidor devem referir-se exatamente à mesma cadeia. Quando os campos do ator no cliente e no servidor são correspondentes, o pedido ou a resposta são levados à ação, em vez de levados ao recebimento de dados. O agente pode ser diferente quando você tem serviços da Web que atuam como um gateway para outros serviços da Web. No entanto, em outros casos, certifique-se de que as informações atuantes são correspondentes no cliente e no servidor. Quando os serviços da Web estão agindo como um gateway e eles não têm o mesmo agente configurado como o pedido que passa através do gateway, os serviços da Web não processam a mensagem de um cliente. Em vez disso, esses serviços da Web enviam o recebimento de dados do pedido. O processo de recebimento de dados que contém a cadeia de agente principal correta processa o pedido. A mesma situação ocorre para a resposta. Portanto, é importante que você verifique se os campos atuantes do cliente e do servidor estão sincronizados.

Resultados

Depois que as APIs WSSSignature e WSSSignPart concluírem essas etapas, as informações de assinatura serão configuradas para as seções do gerados dos arquivos de ligações.

Exemplo

O seguinte exemplo mostra o código de amostra da API WSS para configurar a assinatura, gerar o manipulador de retorno de chamada e especificar o tipo de token X.509 como o token de segurança:

WSSFactory factory = WSSFactory.getInstance();
// Instanciar um contexto de geração
WSSGenerationContext gencont = factory.newWSSGenerationContext();

// Gerar o manipulador de retorno de chamada e especificar o token X.509
   X509GenerateCallbackHandler callbackhandler = generateCallbackHandler();
   SecurityToken token = factory.newSecurityToken(X509Token.class, 
                                                  callbackHandler);

// Configurar as informações de assinatura
WSSSignature sig = factory.newWSSSignature(token);
// Incluir o cabeçalho usando QName
   sig.addSignHeader(new QName("http://www.w3.org/2005/08/addressing", "To"));
   sig.addSignHeader(new QName("http://www.w3.org/2005/08/addressing", "MessageID"));
   sig.addSignHeader(new QName("http://www.w3.org/2005/08/addressing", "Action"));
// Aplicar a assinatura
   gencont.add(sig); 

// Oferecer segurança para a mensagem 
gencont.process(msgctx);

O que Fazer Depois

Você deve configurar as informações de assinatura semelhantes para as ligações do consumidor de pedido do cliente (receptor) concluindo as seguintes tarefas de verificação:
  • Verifique a assinatura
  • Escolha os métodos do algoritmo de assinatura.
  • Altere ou inclua partes assinadas, conforme necessário.

Se a verificação de assinatura já tiver sido configurada, configure as informações de criptografia e decriptografia ou o consumidor e o gerador de tokens.


Í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_configsigninfogenjaxws
Nome do arquivo: twbs_configsigninfogenjaxws.html