Información de claves
En la cabecera de seguridad de un mensaje SOAP, un elemento <ds:KeyInfo> se utiliza para describir donde se halla una clave o un certificado para procesar una parte del mensaje o más de una. Un elemento <ds:KeyInfo> para la firma digital describe un certificado público y un elemento <ds:KeyInfo> para cifrado describe una clave privada.
- Referencia de señal de seguridad
- Identificador de claves
- Nombre de usuario y serie de usuario X509
- Señal incorporada
- Certificado de huella (sólo JAX-WS)
- Nombre de clave (sólo JAX-RPC)
El valor predeterminado para la información de claves que está asociado con una firma digital es Referencia de señal de seguridad. El valor predeterminado para la información de claves asociado al cifrado es Identificador de clave.
La señal Referencia de señal de seguridad e Incorporado son las únicas selecciones que ponen un certificado X.509 directamente en el mensaje. Para todas las demás selecciones, ponga un identificador en el mensaje que sea único para la clave o para el certificado que utiliza el receptor del mensaje para seleccionar una clave o un certificado de su entorno con el fin de evaluar el mensaje.
- Referencia de señal de seguridad
- Se hace referencia directa a una señal de seguridad mediante los Universal Resource Identifiers (URI). El siguiente fragmento XML es un ejemplo de un
elemento <KeyInfo> que se ha generado en un mensaje SOAP para el tipo de información de claves de referencia de señal de seguridad
para una señal 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>
Atención: Tal como se indica en el documento Web Services Interoperability Organization (WS-I) Basic Security Profile Version 1 draft y según se muestra en el ejemplo anterior, el elemento wsse:Reference de un SECURE_ENVELOPE debe tener un atributo ValueType. - Identificador de claves
- Se hace referencia a una señal de seguridad mediante un valor opaco que identifica de forma exclusiva la señal. El algoritmo que se utiliza para
generar el valor del elemento <KeyIdentifier> depende del tipo de señal. Por ejemplo, puede utilizar el identificador para las claves públicas definidas en
RFC
(Request for Comment) 3280 de IETF (Internet Engineering Task Force).
El siguiente elemento <KeyInfo> se genera en el mensaje SOAP para este tipo de información de claves:
<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>
- Nombre de usuario y serie de usuario X509
- Se hace referencia al símbolo de seguridad con un nombre de usuario y un número de
serie de usuario de un certificado X.509. El siguiente elemento <KeyInfo> se genera en el mensaje SOAP para este tipo
de información de claves:
<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>
- Señal incorporada
- La señal de seguridad se incorpora directamente en el elemento <SecurityTokenReference>. El siguiente elemento
<KeyInfo> se genera en el mensaje SOAP para este tipo de información de claves:
<ds:KeyInfo> <wsse:SecurityTokenReference> <wsse:Embedded wsu:Id=”tok1” /> … </wsse:Embedded> </wsse:SecurityTokenReference> </ds:KeyInfo>
- Certificado de huella
- Cuando se selecciona Certificado de huella, se utiliza un elemento KeyIdentifier con un tipo de valor (ValueType)
#ThumbPrintSHA1. Este tipo de información de claves se utiliza con señales X.509. Se hace referencia a la clave X.509 o al certificado mediante el certificado de huella codificado en Base64.
El fragmento XML siguiente es un ejemplo del elemento <KeyInfo> que se genera en el mensaje SOAP para este tipo de información de claves:
<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>
- Nombre de clave
- Se hace referencia a la señal de seguridad utilizando un nombre que coincide con una aserción de identidad dentro de la señal. Se sugiere no utilizar este tipo de clave ya que puede dar como resultado varias
señales de seguridad coincidentes con el nombre especificado. El siguiente elemento <KeyInfo> se genera en el mensaje SOAP para este
tipo de información de claves:
<ds:KeyInfo> <ds:KeyName>CN=Group1</ds:KeyName> </ds:KeyInfo>
En general, utilice un nombre de clave cuando utilice un algoritmo de firma digital HMAC (Key-Hashing Message Authentication Code) como, por ejemplo, este Esquema para firmas XML.
Cada tipo de información de claves se describe en el documento Web Services Security: SOAP Message Security 1.0 (WS-Security 2004) OASIS standard en la sección de seguridad de servicios web.