Ejemplo: configuración de ejemplo para la seguridad de servicios web para una aplicación de la versión 5.x
Para proteger una aplicación de la versión 5.x con la seguridad de servicios web, debe definir las restricciones de seguridad en los descriptores de despliegue de extensiones de IBM® y en los enlaces de extensiones de IBM. Se proporcionan archivos de almacén de claves de ejemplo e información de enlace predeterminado para una configuración de ejemplo a fin de demostrar qué pueden hacer los enlaces y las extensiones de descriptor de despliegue de IBM.
- ${USER_INSTALL_ROOT}/etc/ws-security/samples/dsig-sender.ks
- La contraseña del almacén de claves es client
- Certificado de confianza con nombre de alias, soapca
- Certificado personal con nombre de alias soaprequester y contraseña de clave client emitidos por una autoridad de certificados de intermediarios Int CA2 que, a su vez, es emitido por soapca
- ${USER_INSTALL_ROOT}/etc/ws-security/samples/dsig-receiver.ks
- La contraseña del almacén de claves es server
- Certificado de confianza con nombre de alias, soapca
- Certificado personal con nombre de alias soapprovider y contraseña de clave server emitidos por una autoridad de certificados de intermediarios Int CA2 que, a su vez, es emitido por soapca
- ${USER_INSTALL_ROOT}/etc/ws-security/samples/enc-sender.jceks
- La contraseña del almacén de claves es storepass
- Clave secreta CN=Group1, nombre de alias Group1 y contraseña de clave keypass
- Clave pública cn=bob, o=ibm, c=us, nombre de alias bob y contraseña de clave keypass
- Clave privada CN=Alice, O=IBM, C=US, nombre de alias alice y contraseña de clave keypass
- ${USER_INSTALL_ROOT}/etc/ws-security/samples/enc-receiver.jceks
- La contraseña del almacén de claves es storepass
- Clave secreta CN=Group1, nombre de alias Group1 y contraseña de clave keypass
- Clave privada CN=Bob, O=IBM, C=US, nombre de alias bob y contraseña de clave keypass
- Clave pública CN=Alice, O=IBM, C=US, nombre de alias alice y contraseña de clave keypass
- ${USER_INSTALL_ROOT}/etc/ws-security/samples/intca2.cer
- La autoridad certificadora de intermediarios es Int CA2.
Enlaces predeterminados (nivel de servidor y célula)
- Anclas de confianza
- Se utiliza para validar la confianza del certificado del
firmante.
- El receptor de respuestas utiliza SampleClientTrustAnchor para validar el certificado del firmante.
- El receptor de solicitudes utiliza SampleServerTrustAnchor para validar el certificado del firmante.
- Almacén de certificados de colecciones
- Se utiliza para validar la vía de acceso de certificados.
- El receptor de respuestas y el receptor de solicitudes utilizan SampleCollectionCertStore para validar la vía de acceso del certificado del firmante.
- Localizadores de claves
- Se utiliza para localizar la clave de signatura, cifrado y
descifrado.
- El remitente solicitante utiliza SampleClientSignerKey para firmar el mensaje SOAP. El nombre de clave de firma es clientsignerkey, al que se puede hacer referencia en la información de firmas como el nombre de clave de firma.
- El remitente utiliza SampleServerSignerKey para firmar el mensaje SOAP. El nombre de clave de firma es serversignerkey, al que se puede hacer referencia en la información de firmas como el nombre de clave de firma.
- El remitente utiliza SampleSenderEncryptionKeyLocator para cifrar el mensaje SOAP. Se configura para utilizar el almacén de claves ${USER_INSTALL_ROOT}/etc/ws-security/samples/enc-sender.jceks y el localizador de claves del almacén de claves com.ibm.wsspi.wssecurity.config.KeyStoreKeyLocator.
- El receptor utiliza SampleReceiverEncryptionKeyLocator para descifrar el mensaje SOAP cifrado. La implementación se configura para utilizar el almacén de claves ${USER_INSTALL_ROOT}/etc/ws-security/samples/enc-receiver.jceks y el localizador de clave del almacén de claves com.ibm.wsspi.wssecurity.config.KeyStoreKeyLocator. La implementación se configura para el cifrado simétrico (DES o TRIPLEDES). No obstante, si desea utilizarla para cifrado asimétrico (RSA), debe añadir la clave privada CN=Bob, O=IBM, C=US, el nombre de alias bob y la contraseña de clave keypass.
- El remitente de respuestas utiliza SampleResponseSenderEncryptionKeyLocator para cifrar el mensaje de respuesta SOAP. Se configura para utilizar el almacén de claves ${USER_INSTALL_ROOT}/etc/ws-security/samples/enc-receiver.jceks y el localizador de claves com.ibm.wsspi.wssecurity.config.WSIdKeyStoreMapKeyLocator. Este ubicador de claves correlaciona una identidad autenticada (de la hebra actual) con una clave pública para cifrado. De forma predeterminada, se ha configurado WebSphere Application Server para correlacionarse con la clave pública alice; debe cambiar WebSphere Application Server al usuario correspondiente. El localizador de claves SampleResponseSenderEncryptionKeyLocator también puede establecer de manera predeterminada una clave para cifrado. Por omisión, se configura este localizador de claves para utilizar la clave pública alice.
- Evaluador de ID de confianza
- Se utiliza para establecer confianza antes de confirmar la
identidad en una aserción de identidad.Se configura SampleTrustedIDEvaluator para utilizar la implementación com.ibm.wsspi.wssecurity.id.TrustedIDEvaluatorImpl. La implementación predeterminada de com.ibm.wsspi.wssecurity.id.TrustedIDEvaluator contiene una lista de identidades de confianza. La lista se define como propiedades en la que trustedId_* es la clave y el valor es la identidad de confianza. Defina esta información para el nivel de servidor en la consola de administración siguiendo estos pasos:
- Pulse .
- En Propiedades adicionales, pulse .
- Correlación de inicio de sesión
- Se utiliza para autenticar la señal de seguridad de entrada en la
cabecera SOAP de Web Services Security de un mensaje SOAP.
- El método de autenticación BasicAuth se utiliza para autenticar la señal de seguridad del nombre de usuario (nombre de usuario y contraseña).
- El método de autenticación de firmas se utiliza para correlacionar un nombre distinguido (DN) con un sujeto JAAS (Java™ Authentication and Authorization Server) de WebSphere Application Server.
- El método de autenticación de IDAssertion se utiliza para correlacionar una identidad de confianza con un sujeto JAAS de WebSphere Application Server para la aserción de identidad.
- El método de autenticación LTPA (Lightweight Third Party Authentication) se utiliza para validar una señal de seguridad LTPA.
Configuración de ejemplo
Los ejemplos siguientes demuestran lo que los enlaces y extensiones de descriptores de despliegue de IBM son capaces de hacer. Por motivos de claridad, se ha eliminado de los ejemplos la información innecesaria. No copie o pegue estos ejemplos en los enlaces o descriptores de despliegue de su aplicación. Sólo sirven como referencia; no representan ninguna configuración recomendada.
- Utilice una herramienta de ensamblaje para crear o editar las extensiones de descriptores de despliegue de IBM.
- Utilice una herramienta de ensamblaje o la consola administrativa para crear o editar el archivo de enlaces.
- Se firma el Body de SOAP, la indicación de hora y la señal de seguridad.
- Se cifra el contenido de Body y la señal del nombre de usuario.
- Se envía la señal de nombre de usuario (datos de autenticación básica).
- Se genera la indicación de la hora para la solicitud.
Para la respuesta, se firman el Body de SOAP y la indicación de la hora, se cifra el contenido de Body y se comprueba lo reciente que es el mensaje SOAP utilizando la indicación de la hora. El valor resultante de la comprobación de lo reciente que es el mensaje indica si el mensaje cumple con las restricciones de tiempo predefinidas.
El remitente de solicitudes y el receptor de solicitudes funcionan como un par. De forma parecida, el remitente de respuestas y el receptor de respuestas funcionan como un par.
Extensión de descriptor de despliegue de IBM de cliente
La extensión de descriptor de despliegue de IBM de cliente contiene las restricciones siguientes:
- Firma el Body de SOAP, la indicación de hora y la señal de seguridad.
- Cifra el contenido de Body y la señal del nombre de usuario.
- Envía la señal de autenticación básica (nombre de usuario y contraseña).
- Genera la indicación de la hora para que caduque en tres minutos.
- Verifica que se hayan firmado el Body de SOAP y la indicación de la hora.
- Verifica que se haya cifrado el contenido de Body de SOAP.
- Verifica que la indicación de la hora está presente (también comprueba lo reciente que es el mensaje).
<?xml version="1.0" encoding="UTF-8"?>
<com.ibm.etools.webservice.wscext:WsClientExtension xmi:version="2.0"
xmlns:xmi="http://www.omg.org/XMI" xmlns:com.ibm.etools.webservice.wscext=
http://www.ibm.com/websphere/appserver/schemas/5.0.2/wscext.xmi">
<serviceRefs serviceRefLink="service/myServ">
<portQnameBindings portQnameLocalNameLink="Port1">
<clientServiceConfig actorURI="myActorURI">
<securityRequestSenderServiceConfig actor="myActorURI">
<integrity>
<references part="body"/>
<references part="timestamp"/>
<references part="securitytoken"/>
</integrity>
<confidentiality>
<confidentialParts part="bodycontent"/>
<confidentialParts part="usernametoken"/>
</confidentiality>
<loginConfig authMethod="BasicAuth"/>
<addCreatedTimeStamp flag="true" expires="PT3M"/>
</securityRequestSenderServiceConfig>
<securityResponseReceiverServiceConfig>
<requiredIntegrity>
<references part="body"/>
<references part="timestamp"/>
</requiredIntegrity>
<requiredConfidentiality>
<confidentialParts part="bodycontent"/>
</requiredConfidentiality>
<addReceivedTimeStamp flag="true"/>
</securityResponseReceiverServiceConfig>
</clientServiceConfig>
</portQnameBindings>
</serviceRefs>
</com.ibm.etools.webservice.wscext:WsClientExtension>
Enlaces de extensión de IBM de cliente
El ejemplo 2 muestra el enlace de extensión de IBM de cliente para las restricciones de seguridad descritas anteriormente en las extensiones del descriptor de despliegue de IBM de cliente.
La clave del firmante y la clave de cifrado (descifrado) del mensaje se pueden obtener de la implementación del localizador de claves del almacén de claves (com.ibm.wsspi.wssecurity.config.KeyStoreKeyLocator). La clave del firmante se utiliza para cifrar la respuesta. El ejemplo se ha configurado para que utilice la API de vía de acceso de certificados Java para validar la vía de acceso de certificados del firmante de la signatura digital. Los datos de señal de nombre de usuario (autenticación básica) se recopilan de las solicitudes de entrada estándar (stdin) utilizando una de las implementaciones JAAS predeterminadas :javax.security.auth.callback.CallbackHandler implementación (com.ibm.wsspi.wssecurity.auth.callback.StdinPromptCallbackHandler).
<?xml version="1.0" encoding="UTF-8"?>
<com.ibm.etools.webservice.wscbnd:ClientBinding xmi:version="2.0"
xmlns:xmi="http://www.omg.org/XMI"
xmlns:com.ibm.etools.webservice.wscbnd=
"http://www.ibm.com/websphere/appserver/schemas/5.0.2/wscbnd.xmi">
<serviceRefs serviceRefLink="service/MyServ">
<portQnameBindings portQnameLocalNameLink="Port1">
<securityRequestSenderBindingConfig>
<signingInfo>
<signatureMethod algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha1"/>
<signingKey name="clientsignerkey" locatorRef="SampleClientSignerKey"/>
<canonicalizationMethod algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/>
<digestMethod algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/>
</signingInfo>
<keyLocators name="SampleClientSignerKey" classname=
"com.ibm.wsspi.wssecurity.config.KeyStoreKeyLocator">
<keyStore storepass="{xor}PDM2OjEr" path=
"$${USER_INSTALL_ROOT}/etc/ws-security/samples/dsig-sender.ks" type="JKS"/>
<keys alias="soaprequester" keypass="{xor}PDM2OjEr" name="clientsignerkey"/>
</keyLocators>
<encryptionInfo name="EncInfo1">
<encryptionKey name="CN=Bob, O=IBM, C=US" locatorRef=
"SampleSenderEncryptionKeyLocator"/>
<encryptionMethod algorithm="http://www.w3.org/2001/04/xmlenc#tripledes-cbc"/>
<keyEncryptionMethod algorithm="http://www.w3.org/2001/04/xmlenc#rsa-1_5"/>
</encryptionInfo>
<keyLocators name="SampleSenderEncryptionKeyLocator" classname=
"com.ibm.wsspi.wssecurity.config.KeyStoreKeyLocator">
<keyStore storepass="{xor}LCswLTovPiws" path=
"$${USER_INSTALL_ROOT}/etc/ws-security/samples/enc-sender.jceks" type="JCEKS"/>
<keys alias="Group1" keypass="{xor}NDomLz4sLA==" name="CN=Group1"/>
</keyLocators>
<loginBinding authMethod="BasicAuth" callbackHandler=
"com.ibm.wsspi.wssecurity.auth.callback.StdinPromptCallbackHandler"/>
</securityRequestSenderBindingConfig>
<securityResponseReceiverBindingConfig>
<signingInfos>
<signatureMethod algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha1"/>
<certPathSettings>
<trustAnchorRef ref="SampleClientTrustAnchor"/>
<certStoreRef ref="SampleCollectionCertStore"/>
</certPathSettings>
<canonicalizationMethod algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/>
<digestMethod algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/>
</signingInfos>
<trustAnchors name="SampleClientTrustAnchor">
<keyStore storepass="{xor}PDM2OjEr" path=
"$${USER_INSTALL_ROOT}/etc/ws-security/samples/dsig-sender.ks" type="JKS"/>
</trustAnchors>
<certStoreList>
<collectionCertStores provider="IBMCertPath" name="SampleCollectionCertStore">
<x509Certificates path="$${USER_INSTALL_ROOT}/etc/ws-security/samples/intca2.cer"/>
</collectionCertStores>
</certStoreList>
<encryptionInfos name="EncInfo2">
<encryptionKey locatorRef="SampleReceiverEncryptionKeyLocator"/>
<encryptionMethod algorithm="http://www.w3.org/2001/04/xmlenc#tripledes-cbc"/>
<keyEncryptionMethod algorithm="http://www.w3.org/2001/04/xmlenc#rsa-1_5"/>
</encryptionInfos>
<keyLocators name="SampleReceiverEncryptionKeyLocator" classname=
"com.ibm.wsspi.wssecurity.config.KeyStoreKeyLocator">
<keyStore storepass="{xor}PDM2OjEr" path=
"$${USER_INSTALL_ROOT}/etc/ws-security/samples/dsig-sender.ks" type="JKS"/>
<keys alias="soaprequester" keypass="{xor}PDM2OjEr" name="clientsignerkey"/>
</keyLocators>
</securityResponseReceiverBindingConfig>
</portQnameBindings>
</serviceRefs>
</com.ibm.etools.webservice.wscbnd:ClientBinding>
Extensión de descriptor de despliegue de IBM de servidor
La extensión de descriptor de despliegue de IBM de cliente contiene las restricciones siguientes:
- Verifica que se hayan firmado el Body de SOAP, la indicación de hora y la señal de seguridad.
- Verifica que se hayan cifrado el contenido de Body de SOAP y la señal de nombre de usuario.
- Verifica que la señal de autenticación básica (nombre de usuario y contraseña) esté en la cabecera SOAP de los servicios web.
- Verifica que la indicación de la hora está presente (también comprueba lo reciente que es el mensaje). El valor resultante de la comprobación de lo reciente que es el mensaje indica si el mensaje cumple con las restricciones de tiempo predefinidas.
- Firma el Body de SOAP y la indicación de la hora.
- Cifra el contenido de Body de SOAP.
- Genera la indicación de la hora para que caduque en tres minutos.
<?xml version="1.0" encoding="UTF-8"?>
<com.ibm.etools.webservice.wsext:WsExtension xmi:version="2.0"
xmlns:xmi="http://www.omg.org/XMI"
xmlns:com.ibm.etools.webservice.wsext=
http://www.ibm.com/websphere/appserver/schemas/5.0.2/wsext.xmi">
<wsDescExt wsDescNameLink="MyServ">
<pcBinding pcNameLink="Port1">
<serverServiceConfig actorURI="myActorURI">
<securityRequestReceiverServiceConfig>
<requiredIntegrity>
<references part="body"/>
<references part="timestamp"/>
<references part="securitytoken"/>
</requiredIntegrity>
<requiredConfidentiality">
<confidentialParts part="bodycontent"/>
<confidentialParts part="usernametoken"/>
</requiredConfidentiality>
<loginConfig>
<authMethods text="BasicAuth"/>
</loginConfig>
<addReceivedTimestamp flag="true"/>
</securityRequestReceiverServiceConfig>
<securityResponseSenderServiceConfig actor="myActorURI">
<integrity>
<references part="body"/>
<references part="timestamp"/>
</integrity>
<confidentiality>
<confidentialParts part="bodycontent"/>
</confidentiality>
<addCreatedTimestamp flag="true" expires="PT3M"/>
</securityResponseSenderServiceConfig>
</serverServiceConfig>
</pcBinding>
</wsDescExt>
</com.ibm.etools.webservice.wsext:WsExtension>
Enlaces de extensión de IBM de cliente
La información de enlaces siguiente vuelve a utilizar parte de la información de enlaces definida a nivel de servidor o a nivel de célula, en función de la instalación. Por ejemplo, el receptor de solicitudes hace referencia al almacén de certificación SampleCollectionCertStore y el almacén de confianza SampleServerTrustAnchor se define en el enlace predeterminado. No obstante, la información de cifrado del receptor de solicitudes hace referencia al localizador de claves SampleReceiverEncryptionKeyLocator definido en el enlace de nivel de aplicación (el mismo archivo ibm-webservices-bnd.xmi). El remitente de respuestas se ha configurado para que utilice la clave del firmante de la signatura digital de la solicitud para cifrar la respuesta utilizando una de las implementaciones de localizador de claves predeterminado (com.ibm.wsspi.wssecurity.config.CertInRequestKeyLocator).
<?xml version="1.0" encoding="UTF-8"?>
<com.ibm.etools.webservice.wsbnd:WSBinding xmi:version="2.0"
xmlns:xmi="http://www.omg.org/XMI"
xmlns:com.ibm.etools.webservice.wsbnd=
http://www.ibm.com/websphere/appserver/schemas/5.0.2/wsbnd.xmi">
<wsdescBindings wsDescNameLink="MyServ">
<pcBindings pcNameLink="Port1" scope="Session">
<securityRequestReceiverBindingConfig>
<signingInfos>
<signatureMethod algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha1"/>
<certPathSettings>
<trustAnchorRef ref="SampleServerTrustAnchor"/>
<certStoreRef ref="SampleCollectionCertStore"/>
</certPathSettings>
<canonicalizationMethod algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/>
<digestMethod algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/>
</signingInfos>
<encryptionInfos name="EncInfo1">
<encryptionKey locatorRef="SampleReceiverEncryptionKeyLocator"/>
<encryptionMethod algorithm="http://www.w3.org/2001/04/xmlenc#tripledes-cbc"/>
<keyEncryptionMethod algorithm="http://www.w3.org/2001/04/xmlenc#rsa-1_5"/>
</encryptionInfos>
<keyLocators name="SampleReceiverEncryptionKeyLocator" classname=
"com.ibm.wsspi.wssecurity.config.KeyStoreKeyLocator">
<keyStore storepass="{xor}LCswLTovPiws" path="$${USER_INSTALL_ROOT}/
etc/ws-security/samples/enc-receiver.jceks" type="JCEKS"/>
<keys alias="Group1" keypass="{xor}NDomLz4sLA==" name="CN=Group1"/>
<keys alias="bob" keypass="{xor}NDomLz4sLA==" name="CN=Bob, O=IBM, C=US"/>
</keyLocators>
</securityRequestReceiverBindingConfig>
<securityResponseSenderBindingConfig>
<signingInfo>
<signatureMethod algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha1"/>
<signingKey name="serversignerkey" locatorRef="SampleServerSignerKey"/>
<canonicalizationMethod algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/>
<digestMethod algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/>
</signingInfo>
<encryptionInfo name="EncInfo2">
<encryptionKey locatorRef="SignerKeyLocator"/>
<encryptionMethod algorithm="http://www.w3.org/2001/04/xmlenc#tripledes-cbc"/>
<keyEncryptionMethod algorithm="http://www.w3.org/2001/04/xmlenc#rsa-1_5"/>
</encryptionInfo>
<keyLocators name="SignerKeyLocator" classname=
"com.ibm.wsspi.wssecurity.config.CertInRequestKeyLocator"/>
</securityResponseSenderBindingConfig>
</pcBindings>
</wsdescBindings>
<routerModules transport="http" name="StockQuote.war"/>
</com.ibm.etools.webservice.wsbnd:WSBinding>