Informações Chave
No cabeçalho de Segurança de uma mensagem SOAP, um elemento <ds:KeyInfo> é usado para descrever onde um chave ou certificado é localizado para processar uma ou mais partes da mensagem. Um elemento <ds:KeyInfo> para assinatura digital descreve um certificado público e um elemento <ds:KeyInfo> para criptografia descreve uma chave privada.
- Referência do Token de Segurança
- Identificador de chave
- Nome e Número de Série do Emissor de X509
- Token Incorporado
- Thumbprint (somente JAX-WS)
- Nome da chave (somente JAX-RPC)
O valor padrão para informações chave que está associado a uma assinatura digital é Referência do token de segurança. O valor padrão para informações chave associadas à criptografia é Identificador chave.
Referência do token de segurança e token Integrado são as únicas seleções que colocam um certificado X.509 diretamente na mensagem. Todas as outras seleções colocam um identificador na mensagem que é exclusivo para a chave ou o certificado que o destinatário da mensagem usa para selecionar uma chave ou certificado a partir de seu ambiente para avaliar a mensagem.
- Referência do Token de Segurança
- Um token de segurança em qualquer lugar na mensagem é diretamente referenciado usando
URIs (Universal Resource Identifiers). O seguinte fragmento XML é um exemplo de um elemento <KeyInfo> que é gerado em uma mensagem SOAP para o tipo de informação chave de referência de token de segurança para um token X.509v3:
<wsse:BinarySecurityToken EncodingType="...#Base64Binary" ValueType="...#X509v3" wsu:Id="SomeCert"> .... < /wsse:BinarySecurityToken> ... <ds:KeyInfo> <wsse:SecurityTokenReference> <wsse:Reference URI='#SomeCert' ValueType="...#X509v3" /> </wsse:SecurityTokenReference> </ds:KeyInfo>
Atenção: Conforme indicado no rascunho do Web services Interoperability Organization (WS-I) Basic Security Profile Versão 1 e mostrado no exemplo anterior, o elemento wsse:Reference em um SECURE_ENVELOPE deve ter um atributo ValueType. - Identificador de chave
- O token de segurança é referenciado usando um valor opaco que identifica exclusivamente o token.
O algoritmo que é utilizado para gerar o valor do elemento <KeyIdentifier> depende do tipo de token. Por exemplo, você pode utilizar o identificador
para as chaves públicas que estão definidas no RFC (Request for Comment) 3280 do IETF (Internet Engineering
Task Force). O elemento <Info_de_Chave> a seguir
é gerado na mensagem SOAP para este tipo de informações chave:
<ds:KeyInfo xmlns:ds="http://www.w3.org/2000/09/xmldsig#"> <wsse:SecurityTokenReference> <wsse:KeyIdentifier ValueType="http://docs.oasis-open.org/wss/2004/01 /oasis-200401-wss-x509-token-profile-1.0#X509v3SubjectKeyIdentifier"> /62wXO... </wsse:KeyIdentifier> </wsse:SecurityTokenReference> </ds:KeyInfo>
- Nome e Número de Série do Emissor de X509
- O token de segurança é referenciado por um nome de emissor e um número de série do emissor de um
certificado X.509. O elemento <Info_de_Chave> a seguir
é gerado na mensagem SOAP para este tipo de informações chave:
<ds:KeyInfo> <wsse:SecurityTokenReference> <ds:X509Data> <ds:X509IssuerSerial> <ds:X509IssuerName>CN=Jones, O=IBM, C=US</ds:X509IssuerName> <ds:X509SerialNumber>1040152879</ds:X509SerialNumber> </ds:X509IssuerSerial> </ds:X509Data> </wsse:SecurityTokenReference> </ds:KeyInfo>
- Token Incorporado
- O token de segurança é incorporado diretamente
no elemento <Referência_do_Token_de_Segurança>. O elemento <Info_de_Chave> a seguir
é gerado na mensagem SOAP para este tipo de informações chave:
<ds:KeyInfo> <wsse:SecurityTokenReference> <wsse:Embedded wsu:Id=”tok1” /> … </wsse:Embedded> </wsse:SecurityTokenReference> </ds:KeyInfo>
- Impressão digital do polegar
- Quando Thumbprint for selecionado, um elemento KeyIdentifier com um
Tipo de valor #ThumbPrintSHA1 será usado. Esse tipo de informação chave deve ser usado com
tokens X.509. A chave ou certificado X.509 é referenciado pelo
thumbprint codificado por Base64 do certificado.
O seguinte fragmento XML é um elemento <KeyInfo> de exemplo que é gerado na mensagem SOAP para esse tipo de informações chave:
<ds:KeyInfo> <wsse:SecurityTokenReference> <wsse:KeyIdentifier EncodingType="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-soap-message-security-1.0#Base64Binary" ValueType="http://docs.oasis-open.org/wss/oasis-wss480soap-message-security-1.1#ThumbPrintSHA1" >B5o2elsan6IhbxxYgZ62pPFnUIc=</wsse:KeyIdentifier> </wsse:SecurityTokenReference> </ds:KeyInfo>
- Nome da Chave
- O token de segurança é referenciado usando um nome correspondente a uma asserção de identidade dentro do
token. Sugere-se que você não use esse tipo de chave, pois pode resultar em vários tokens de
segurança correspondentes ao nome especificado. O elemento <Info_de_Chave> a seguir
é gerado na mensagem SOAP para este tipo de informações chave:
<ds:KeyInfo> <ds:KeyName>CN=Group1</ds:KeyName> </ds:KeyInfo>
Em geral, use um nome de chave quando usar um algoritmo de assinatura digital Key-Hashing Message Authentication Code (HMAC), como este Esquema para assinaturas XML.
Cada tipo de informações chave é descrito no Web Services Security: SOAP Message Security 1.0 (WS-Security 2004) OASIS padrão na seção Web Services Security.