Seguridad de servicios web (WS-Security)

<< Clic para mostrar Tabla de Contenidos >>

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

Seguridad de servicios web (WS-Security)

Introducción

Bizagi ofrece un estándar de seguridad que se puede aplicar sobre la API SOAP. Para obtener más información sobre los servicios web integrados de Bizagi, consulte la Servicios alternos SOAP de Bizagi para aplicaciones externas. Para invocar cualquiera de estos servicios es necesario configurar la seguridad, por lo que solo se invocan utilizando el estándar WS-Security.

 

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 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).

 

note_pin

Usted puede usar certificados auto-firmados solamente en el ambiente de desarrollo

 

Habilite la seguridad de los servicios web como una característica en su proyecto Bizagi como se describe a continuación.

 

Generar el certificado auto-firmado (solamente para el ambiente de desarrollo)

Para el ambiente de desarrollo, puede utilizar certificados auto-firmados con fines de prueba. Para el entorno de producción, es obligatorio utilizar un certificado emitido por una CA adecuada.

 

Para generar el certificado auto-firmado descargue el instalador apropiado de OpenSSL de https://slproweb.com/products/Win32OpenSSL.html,

 

Para el Sistema Operativo Windows, la instalación es asistida, y se recomienda seguir los pasos por defecto. Guarde las configuraciones indicando copiar las DLLs de OpenSSL en el directorio de binarios de OpenSSL:

 

Al terminar la instalación exitosamente, debe poder ver el archivo ejecutable openssl.exe (en el caso de windows), además del archivo de configuración openssl.cfg, en el directorio de binarios o ubicación indicada en la instalación:

 

Se recomienda que añada OpenSSL a sus variables de ambiente del sistema, de manera que pueda correr sus ejecutables sin preocuparse de las rutas.

Para ello, edite la variable de ruta Path:

 

SAML_OpenSSL2

 

Y asegúrese de añadir la ubicación anterior (directorio binario de OpenSSL) a sus rutas registradas:

 

SAML_OpenSSL1

 

Finalmente, dé clic en Ok y guarde los cambios cuando cierre las ventanas (cualquier línea de comandos, ventanas de variables de ambiente, etc).

Con los pasos indicados en este artículo, OpenSSL se empleará usando línea de comandos.

En caso de que esté interesado en aprender otras opciones y para obtener información completa sobre las opciones de comandos de OpenSSL, refiérase a su documentación oficial en https://www.openssl.org/docs/man1.0.2/apps/openssl-req.html.sl.org/docs/man1.0.2/apps/openssl-req.html.

 

Una vez instalado, puede abrir un CMD (consola de comandos), cambie el directorio a una carpeta donde desea generar el certificado y ejecutar el siguiente comando:

 

openssl req -x509 -newkey rsa:4096 -keyout WsCertificatekey.pem -out WSCertificate.cer -days 365 -nodes

 

Se solicita cierta información relacionada con el certificado como país, estado, nombre común y otros. Después de registrar toda la información, presione Enter y revise que los archivos .cer y .pem están en la carpeta.

 

WS_Security_01

 

Instale el certificado en el servidor de Bizagi

Necesita instalar el certificado en el servidor de Bizagi donde se está ejecutando el proyecto (donde se está ejecutando el Portal de Trabajo). Este procedimiento debe realizarse una sola vez y no es necesario replicarlo en las estaciones de trabajo de los desarrolladores.

 

Sus administradores suelen realizar este paso a través de Microsoft Management Console (disponible directamente en el sistema operativo Windows).

 

Abra la consola de administración de Microsoft.

Busque el archivo MMC.exe para abrir Microsoft Management Console.

 

Haga clic en File y luego Add/Remove Snap-in.

 

MMC_snapin1

 

Para agregar esa vista, asegúrese de hacer clic en Certificates y luego en Add>:

 

MMC_addview

 

Haga clic en OK y asegúrese de seleccionar los certificados de Local computer.

 

Haga clic en Finish cuando haya terminado.

 

Inicie el asistente de importación de certificados para Personal.

Haga clic derecho en Personal, seleccione All Tasks y haga clic en Import...

Haga clic en Finish cuando haya terminado.

 

MMC_import

 

Esto inicia un procedimiento de importación de certificados asistido por un asistente.

 

Seleccione el archivo .cer.

Haga clic en Browse para ubicar y seleccionar el archivo de certificado .cer generado previamente:

 

MMC_import1cer

 

Haga clic en Next.

 

Defina una contraseña para la llave privada.

Proporcione una contraseña de su elección. Guarde esta contraseña en un lugar seguro para su uso posterior.

 

Puede dejar marcadas las casillas Mark this key as exportable e Include all extended properties.

Haga clic en Next.

 

Defina el certificate store

Marque Place all certificates in the following store y seleccione el certificate store Personal.

 

Haga clic en Next y luego en Finish, cuando haya terminado.

 

Puede verificar que el certificado se encuentre ahora en el certificate store Personal, viendo el nombre que definió al generar el certificado.

 

Inicie el asistente de importación de certificados para el store Trusted Root.

Haga clic derecho en Trusted Root Certification Authorities, seleccione All Tasks y haga clic en Import.

 

BICOM_trustedimport

 

Esto inicia el mismo procedimiento de importación de certificados asistido por un asistente que ya ha utilizado.

 

Seleccione el archivo cer.

Haga clic en Browse para localizar y seleccionar el mismo certificado .cer que importó en el paso anteiror:

 

MMC_import1cer

 

Haga clic en Next.

 

Defina una contraseña para la llave privada.

Proporcione una contraseña de su elección. Guarde la contraseña en un lugar seguro para su uso posterior.

 

Puede dejar marcadas las casillas Mark this key as exportable e Include all extended properties.

Haga clic en Next.

 

Defina el certificate store

Marque Place all certificates in the following store y seleccione el certificate store Trusted Root Certification Authorities.

 

Haga clic en Next y luego en Finish, cuando haya terminado.

 

Puede verificar que el certificado se encuentre ahora en el certificate store Trusted Root Certification Authorities viendo el nombre que definió al generar el certificado.

Puede abrir ese certificado para verificar su configuración (haga clic derecho y seleccione Open):

 

Verifique la validez adecuada del certificado.

En la pestaña General cuando vea el certificado, confirme que especifica "This certificate is intended for the following purpose(s): * All issuance policies; * All application policies".

 

MMC_details

 

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, sin embargo recomendamos activar la opción de seguridad.

 

Por otro lado, los proyectos de Bizagi creados en la versión 11.x 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). Este puede ser cualquier nombre que desee.

Contraseña

Contraseña del usuario mencionado anteriormente. Puede ser cualquier contraseña que desee.

X509 Valor de búsqueda

Dependiendo del parámetro Tipo de búsqueda, debe usar el valor. Por ejemplo, si usa Huella digital (Thumbrpint) en el Tipo de búsqueda, debe usar el valor sin espacios (por ejemplo, CCBE812A32201488A0D784EDFFFFA7189232B66D).

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).

 

Para asegurarse de que la API SOAP esté funcionando, revise que puede obtener el WSDL. Para hacerlo, use la URL de cualquiera de los métodos usando la extensión .SVC y el comando WSDL. Puede utilizar esta URL en cualquier navegador que utilice este formato.

 

http://[URL Portal de Trabajo]/WebServices/[componente interno].svc?wsdl

 

Por ejemplo:

 

https://MiProyecto-MiEmpresa.bizagi.com/webservices/entitymanagersoa.svc?wsdl

 

Usted debe ver el WSDL:

 

WSDL

 

 

También puede confiar en la herramienta cliente SOAP UI para fines de prueba y verificación.

 

Usando SOAPUI

Al invocar la API de SOAP mediante SOAPUI, asegúrese de tener lo siguiente:

 

1.Usar la extensión SVC en la URL

2.En las propiedades de la solicitud, configure el nombre de usuario y la contraseña definidos en la Consola de administración de Bizagi.

3.Establezca el tipo de WSS-Password en PasswordText.

4.Seleccione la pestaña WS-A

5.Seleccione la casilla de verificación Add default wsa: To

 

SOAPUI

 

Usando código .NET

Debe utilizar las referencias de servicio y establecer las credenciales del cliente dentro del código. Aquí hay un ejemplo:

 

static void Main(string[] args)

        {

            ServicePointManager.ServerCertificateValidationCallback += (sender, cert, chain, sslPolicyErrors) => true; // Validate if the certificate is valid

 

            SecureEntityManagerSOAClient client = new SecureEntityManagerSOAClient(); // Service Reference Instance

 

            client.ClientCredentials.UserName.UserName = "username";

            client.ClientCredentials.UserName.Password = "password";

 

            using (new OperationContextScope((System.ServiceModel.IClientChannel)client.InnerChannel))

            {

                var result = client.getEntitiesAsString("");

                Console.WriteLine(result);

            }

        }