Seguridad de servicios web (WS-Security)

<< Click para mostrar Tabla de Contenidos >>

Navegación:  Bizagi Studio > Bizagi desde aplicaciones externas > API de Bizagi para aplicaciones externas > Servicios web SOAP > URL y notas importantes >

Seguridad de servicios web (WS-Security)

Introducción

Bizagi ofrece esta funcionalidad para que pueda ser invocada directamente desde aplicaciones externas a través de un API orientada a servicios.

El API orientado a servicios tiene funcionalidad de servicios web SOAP, los cuales no requieren iniciar la configuración para su uso.

Para más información acerca de los servicios web de Bizagi, refiérase a API de Bizagi para aplicaciones externas.

 

Estándares y seguridad en WS-*

Los servicios web de Bizagi admiten las capacidades de WS-Security y cumplen con los estándares WS- * más utilizados.

Para ambientes de producción, se recomienda y es especialmente útil asegurarse de habilitar WS-Security para dichos servicios web de Bizagi.

Esto le permitirá exigir que los servicios web de Bizagi sean invocados estrictamente solo por una aplicación autorizada (que proporcione un nombre de usuario y una contraseña adecuados) y que pueda confiar en el uso de certificados (compatibles con X.509) para el cifrado de mensajes SOAP.

 

Los servicios web de Bizagi ofrecen las siguientes normas:

WS-Security

WS-SecurityPolicy

WS-Policy

WS-Addressing

XML Signature

XML Encryption

SOAP 1.2

WSDL 1.1

 

Prerrequisitos

Para que su Servidor Bizagi cuente con servicios web que soporten estándares y seguridad WS- *, necesita:

 

1. Para instalar Microsoft .NET Framework en su versión 4.5.

 

2. Tener certificados oficiales X.509 (emitidos por una CA apropiada) para propósitos de encriptación.

Dichos certificados deben ser válidos y ya instalados. Tenga en cuenta que el administrador de su plataforma requerirá la experiencia adecuada en este tema (certificados, su uso e instalación).

 

Una vez que tenga instalada la versión de este marco, deberá habilitar la seguridad de los servicios web como una característica en su proyecto Bizagi como se describe a continuación.

 

Habilitación de seguridad para servicios web

Por defecto, los servicios web legados de Bizagi no incluyen características que cumplan con los estándares y seguridad WS- *.

Los proyectos de Bizagi que se actualizan de las versiones 10 a 11 seguirán utilizando los servicios web legados, que son los que no presentan las características de seguridad.

 

Por otro lado, los proyectos de Bizagi creados en la versión 11 comenzarán utilizando la función de seguridad habilitada.

 

note_pin

Los Servicios web legados se apoyan en servicios asmx, como se presentaba en versiones anteriores de .NET framework (por ejemplo v2.0), mientras que los servicios web que utilizan WS-Security se apoyan en Windows communication foundation framework (WCF).

 

Es altamente recomendado el uso de servicios web con la funcionalidad de seguridad (WS-Security). Al hacerlo, considere lo siguiente:

 

1. Habilite WS-Security y deshabilite Servicios web legados.

En caso de que su proyecto haya sido actualizado de una versión anterior, y estuviera usando los Servicios web legados, necesitará asegurarse que haya adecuado cualquier aplicación externa para que invoque los nuevos servicios web.

Al habilitar WS-Security, asegúrese de configurar los parámetros de acuerdo a su certificado X.509 instalado.

 

2. Configure la aspectos adicionales de seguridad para dichos servicios web en el servidor de aplicaciones.

Por lo tanto, esta recomendación aplica sin importar los servicios web Bizagi que utilice, y especifica configurar listas blancas de IP, adicionando protección para los recursos en su servidor de aplicación, tal como se describe en Recomendaciones de seguridad en la aplicación.

 

Procedimiento

Lleve a cabo los siguientes pasos para utilizar los servicios web con WS-Security en Bizagi:

 

1. Abra la opción Entorno desde la cinta de opciones y seleccione la pestaña Popular.

Habilite WS-security al final de la ventana (y deje sin marcar la opción de Servicios web legados).

 

1

 

note_pin

En caso de que necesite compatibilidad con versiones anteriores o que usted use Servicios web legados (no recomendado), en cualquier momento puede regresar y activar la opción.

 

2. Ingrese los parámetros de la funcionalidad de WS-Security.

Tenga en cuenta que para habilitar las capacidades de cifrado y firma, deberá especificar la información habitual sobre los certificados x509 instalados (como el nombre y la ubicación de la tienda).

 

2

 

Ingrese los detalles de configuración como se detalla a continuación (necesariamente debe usar todos los aspectos de seguridad de esta función, que incluyen autenticación, firma y cifrado).

 

PARÁMETRO

DESCRIPTION

Usuario

El nombre de usuario usado para firmar.

Para propósitos de autenticación de los servicios web, usted debe definir un usuario (como es especificado por el estándar de WS-Security).

Contraseña

Contraseña del usuario mencionado anteriormente.

X509 Valor de búsqueda

El Common name del certificado X.509 instalado.

X509 Localización repositorio

La ubicación del repositorio donde el certificado X.509 está instalado.

Puede usar el MMC snap-in para verificar dicha información (https://msdn.microsoft.com/en-us/library/ms788967(v=vs.110).aspx).

X509 Nombre repositorio

El nombre del repositorio donde el certificado X.509 está instalado.

Usted puede usar el MMC snap-in para verificar dicha información (https://msdn.microsoft.com/en-us/library/ms788967(v=vs.110).aspx).

X509 Tipo de búsqueda

El valor por el cual se filtrará el parámetro Valor de búsqueda.

Para buscar el common name del certificado, use FindBySubjectName.

X509 Modo validación

Elija una de las opciones válidas:

ChainTrust: Con esta opción se valida el certificado usando la autoridad certificadora. En escenarios .NET, puede ser más confiable usar esta opción.

PeerTrust: Con esta opción se valida con el servidor su repositorio de confianza (recomendado). PeerTrust implica que el certificado entrante debe estar en la carpeta Trusted People certificate".

PeerOrChainTrust: Cualquiera de los anteriores.

None: Confiar en cualquier certificado (no recomendado).

 

3. Asegúrese de que sus aplicaciones externas o programas invoquen dichos servicios al proveer nombre de usuario y contraseña.

De manera similar, verifique que estos deben poder utilizar los certificados instalados para encriptar y firmar.

Después de estas configuraciones, asegúrese que cada cliente que se conecta debe usar las certificaciones adecuadas.

 

La URL de los servicios web utilizando la funcionalidad de seguridad (WS-Security) usará una extensión ".svc".

Por ejemplo, en vez de el Servicio web legado http://.../WebServices/EntityManagerSOA.asmx?wsdl, usted podría usar:

http://.../WebServices/EntityManagerSOA.svc?wsdl

 

WS_SVC_wsdl

 

Revise el siguiente ejemplo para ver como una sección <Security> encriptada debe ser enviada en la cabecera SOAP en este tipo de invocaciones:

<o:Security s:mustUnderstand="1" xmlns:o="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd">

 <u:Timestamp u:Id="uuid-8628c1ed-914e-4d9c-a64e-4a3d44d6d371-2">

         <u:Created>2015-10-16T14:54:49.385Z</u:Created>

         <u:Expires>2015-10-16T14:59:49.385Z</u:Expires>

   </u:Timestamp>

   <e:EncryptedKey Id="uuid-8628c1ed-914e-4d9c-a64e-4a3d44d6d371-1" xmlns:e="http://www.w3.org/2001/04/xmlenc#">

         <e:EncryptionMethod Algorithm="http://www.w3.org/2001/04/xmlenc#rsa-oaep-mgf1p">

                 <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" xmlns="http://www.w3.org/2000/09/xmldsig#"/>

       </e:EncryptionMethod>

         <KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">

                 <o:SecurityTokenReference>

                         <o:KeyIdentifier ValueType="http://docs.oasis-open.org/wss/oasis-wss-soap-message-security-1.1#ThumbprintSHA1" EncodingType="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-soap-message-security-1.0#Base64Binary">[encrypted value]</o:KeyIdentifier>

                 </o:SecurityTokenReference>

       </KeyInfo>

       <e:CipherData>

                 <e:CipherValue>[encrypted value]</e:CipherValue>

       </e:CipherData>

   </e:EncryptedKey>

   <c:DerivedKeyToken u:Id="_0" xmlns:c="http://schemas.xmlsoap.org/ws/2005/02/sc">

         <o:SecurityTokenReference k:TokenType="http://docs.oasis-open.org/wss/oasis-wss-soap-message-security-1.1#EncryptedKey" xmlns:k="http://docs.oasis-open.org/wss/oasis-wss-wssecurity-secext-1.1.xsd">

                 <o:Reference ValueType="http://docs.oasis-open.org/wss/oasis-wss-soap-message-security-1.1#EncryptedKey" URI="#uuid-8628c1ed-914e-4d9c-a64e-4a3d44d6d371-1"/>

       </o:SecurityTokenReference>

         <c:Offset>0</c:Offset>

       <c:Length>24</c:Length>

       <c:Nonce>[encrypted value]</c:Nonce>

 </c:DerivedKeyToken>

 <c:DerivedKeyToken u:Id="_1" xmlns:c="http://schemas.xmlsoap.org/ws/2005/02/sc">

       <o:SecurityTokenReference k:TokenType="http://docs.oasis-open.org/wss/oasis-wss-soap-message-security-1.1#EncryptedKey" xmlns:k="http://docs.oasis-open.org/wss/oasis-wss-wssecurity-secext-1.1.xsd">

                 <o:Reference ValueType="http://docs.oasis-open.org/wss/oasis-wss-soap-message-security-1.1#EncryptedKey" URI="#uuid-8628c1ed-914e-4d9c-a64e-4a3d44d6d371-1"/>

       </o:SecurityTokenReference>

       <c:Nonce>[encrypted value]</c:Nonce>

 </c:DerivedKeyToken>

   <e:ReferenceList xmlns:e="http://www.w3.org/2001/04/xmlenc#">

         <e:DataReference URI="#_3"/>

       <e:DataReference URI="#_8"/>

       <e:DataReference URI="#_9"/>

   </e:ReferenceList>

 <e:EncryptedData Id="_9" Type="http://www.w3.org/2001/04/xmlenc#Element" xmlns:e="http://www.w3.org/2001/04/xmlenc#">

         <e:EncryptionMethod Algorithm="http://www.w3.org/2001/04/xmlenc#aes256-cbc"/>

         <KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">

                 <o:SecurityTokenReference>

                         <o:Reference ValueType="http://schemas.xmlsoap.org/ws/2005/02/sc/dk" URI="#_1"/>

                 </o:SecurityTokenReference>

         </KeyInfo>

       <e:CipherData>

                 <e:CipherValue>[encrypted value]</e:CipherValue>

       </e:CipherData>

   </e:EncryptedData>

 <e:EncryptedData Id="_8" Type="http://www.w3.org/2001/04/xmlenc#Element" xmlns:e="http://www.w3.org/2001/04/xmlenc#">

       <e:EncryptionMethod Algorithm="http://www.w3.org/2001/04/xmlenc#aes256-cbc"/>

       <KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">

                 <o:SecurityTokenReference>

                         <o:Reference ValueType="http://schemas.xmlsoap.org/ws/2005/02/sc/dk" URI="#_1"/>

           </o:SecurityTokenReference>

         </KeyInfo>

       <e:CipherData>

                 <e:CipherValue>[encrypted value]</e:CipherValue>

       </e:CipherData>

   </e:EncryptedData>

</o:Security>

 

Aprendiendo acerca de los certificados X.509 y otras opciones de prueba

En caso de no estar familiarizado con el uso de certificados X.509 o al probar esta funcionalidad en un ambiente de desarrollo, puede dirigirse a la documentación oficial de Microsoft .NET Framework en https://msdn.microsoft.com/en-us/library/ff699202.aspx.

Enlaces externos adicionales pueden presentar tutoriales y guías orientadas a los usuarios que certifican por primera vez, como http://www.reliablesoftware.com/DasBlog/PermaLink,guid,6507b2c6-473e-4ddc-9e66-8a161e5df6e9.aspx.

 

Más información de los estándares WS-* puede ser encontrada en https://www.oasis-open.org/committees/tc_home.php?wg_abbrev=wss (publicada y mantenida por OASIS WSS).