Sincronizando usuarios via servicios web

<< Clic para mostrar Tabla de Contenidos >>

Navegación:  Bizagi Studio > Definición de Seguridad > Seguridad del Portal de Trabajo > Sincronización de usuarios >

Sincronizando usuarios via servicios web

Introducción

Bizagi soporta diferentes tipos de autenticación, algunos de los cuales están ya tienen integrados mecanismos de autenticación que utilizan proveedores de identidad externos como servicios federados o sistemas LDAP.

Independiente del tipo de autenticación seleccionado, usted necesita asegurarse de que los usuarios estén previamente registrados en la base de datos de Bizagi antes de que dichos usuarios intenten acceder al Portal de Trabajo.

 

Inicialmente, registrar los usuarios significa crearlos o sincronizarlos en la entidad WFUser de Bizagi y para esto, usted puede utilizar los servicios web de Bizagi SOAP.

 

note_pin

Tenga en cuenta que específicamente para el tipo de autenticación LDAP, usted puede utilizar el módulo de importación de LDAP descrito en Importar usuarios LDAP,

 

Antes de Empezar

Para usar los servicios SOAP para este proposito, considere estos pasos:

 

Habilitar los servicios web SOAP para su proyecto

La habilitación de los servicios web SOAP se hace con Bizagi Studio como se describe en Habilitar el API de Bizagi.

Tenga en cuenta que se recomienda utilizar los servicios web con soporte de WS-Security, para los cuales necesita considerar el uso de certificados X509.

 

Tener un cliente para consumir los servicios web de Bizagi

Una vez que los servicios web de su proyecto estén habilitados, considere que necesita tener un cliente para invocar los métodos SOAP. Por ejemplo, puede utilizar SOAPUI u otro cliente desarrollado por usted. Las siguientes secciones describen ejemplos para crear o actualizar usuarios.

 

¿Qué Necesita Hacer?

Dependiendo de lo que necesite hacer, debe utilizar un método específico de los servicios web SOAP de Bizagi:

 

Para crear nuevos usuarios

Para crear nuevos usuarios, debe utilizar el método CreateUserAsString. Para obtener más detalles sobre este método, haga clic aquí. En artículo actual puede ver una serie de ejemplos del XML que debe enviarse al crear un nuevo usuario:

 

Ejemplo de creación de usuario simple (útil para completar inicialmente los datos del usuario)

Ejemplo completo de creación de usuarios (considera la reutilización de definiciones de usuarios organizacionales como roles o áreas)

Cree usuarios con propiedades de usuario personalizadas

 

Para actualizar usuarios existentes

Para actualizar la información de los usuarios existentes, debe utilizar el método saveEntityAsString. Vea más detalles sobre este método aquí. En el artículo actual puede ver una serie de ejemplos del XML que debe enviarse al actualizar un usuario existente:

 

Actualizar información simple de usuarios existentes

Actualizar ejemplos de usuarios y al mismo tiempo crear nuevas definiciones organizativas como roles o áreas

Asignación de usuarios Interesados

Actualizar una propiedad de usuario personalizada

 

Creación de usuarios

Para crear usuarios, invoque el método llamado CreateUserAsString. Invoque y envíe la información a Bizagi como se muestra en los ejemplos a continuación:

 

Ejemplo de creación de un usuario (útil para llenar la información inicial de los usuarios)

El siguiente ejemplo crea tres usuarios con la información básica obligatoria (organization (organización), domain (dominio) más username (nombre de usuario), fullName (nombre completo) y contactEmail (correo electrónico)).

 

<BizAgiWSParam>

<Entities>

<WFUSER>

 <BasicInformation>

         <FullName>Tom Hall</FullName>

         <UserName>tomh</UserName>

         <Domain>agilityCorp</Domain>

         <ContactEmail>tomh@agilityCorp.com</ContactEmail>

         <Organizations>

                 <Organization>1</Organization>

         </Organizations>

 </BasicInformation>

</WFUSER>

<WFUSER>

 <BasicInformation>

         <FullName>Martha Lewis</FullName>

         <UserName>marthal</UserName>

         <Domain>agilityCorp</Domain>

         <ContactEmail>marthal@agilityCorp.com</ContactEmail>

         <Organizations>

                 <Organization>1</Organization>

         </Organizations>

 </BasicInformation>

</WFUSER>

<WFUSER>

 <BasicInformation>

         <FullName>Piotr Blanter</FullName>

         <UserName>piotrb</UserName>

         <Domain>agilityCorp</Domain>

         <ContactEmail>piotrb@agilityCorp.com</ContactEmail>

         <Organizations>

                 <Organization>1</Organization>

         </Organizations>

 </BasicInformation>

</WFUSER>

</Entities>

</BizAgiWSParam>

 

Observe que un usuario puede pertenecer a más de una organización, a pesar de que el ejemplo anterior considere enlazar los usuarios con la organización por defecto que ya está registrada en el proyecto de Bizagi (las organizaciones adicionales necesitan definición y por lo tanto requiere asignar los identificadores a la definición de key).

De forma predeterminada, los usuarios creados con la información básica obligatorio tendrán activados los parámetros Activo (Enabled) y Habilitado para asignación (Enabled for assignation).

Se requiere que los usuarios pertenezcan al menos a una organización, de lo contrario, dicho usuario no podrá realizar acciones en el Portal de Trabajo (como crear casos, ejecutar consultas, etc).

Se enviará una respuesta exitosa del servicio web con los identificadores únicos de sistema de cada usuario creado:

 

SaveEntityWFUser

Ejemplo completo de creación de usuarios (considera las definiciones de usuarios organizacionales)

El siguiente ejemplo crea un usuario con la información básica además de las definiciones organizaciones como el área y la ubicación (las predeterminadas), información de usuario (contraseña, foro de perfil, si el usuario está activo y activo para asignación) y adicionalmente, detalles muchos a muchos que incluyen roles, habilidades o posiciones (dos roles predefinidos, sin habilidades y la posiciones predeterminada).

 

<BizAgiWSParam>

<Entities>

<WFUSER>

 <BasicInformation>

         <FullName>Juliette Leroy</FullName>

         <UserName>juliettel</UserName>

         <Domain>agilityCorp</Domain>

         <ContactEmail>juliettel@agilityCorp.com</ContactEmail>

         <Password>Bizagi123</Password>

         <Picture>/9j/4AAQSkZJRgABAQEAYABgAAD/4QHGRXhpZgAATU0AKgAAA..</Picture>

         <Organizations>

                 <Organization>1</Organization>

         </Organizations>

 </BasicInformation>

 <UserConfiguration>        

         <Roles>

                 <idRole key="1"></idRole>

                 <idRole key="9998"></idRole>

         </Roles>

         <idArea key="1"></idArea>

         <idLocation key="1"></idLocation>

         <Positions>

                 <Position>1</Position>

         </Positions>

         <Enabled>1</Enabled>

         <EnabledForAssignation>1</EnabledForAssignation>

         <IdDelegate>204</IdDelegate>

 </UserConfiguration>

</WFUSER>

</Entities>

</BizAgiWSParam>

 

El servicio web mostrará una respuesta exitosa igual a la presentada previamente.

Observe que un usuario puede pertenecer máximo a un área y ubicación; pero puede pertenecer a más de un rol, habilidad o posición. Cuando considere estas definiciones, recuerde que necesita definirlas previamente y buscarlas por sus identificadores (para modificar la definición key):

 

SaveEntityOrganization

 

Cree usuarios con propiedades de usuario personalizadas

Bizagi permite crear propiedades de usuario personalizadas, por ejemplo Edad, o Nivel de Autoridad, cuando las propiedades predeterminadas no son suficientes para crear perfiles de sus usuarios. Consulte Propiedades de usuario. Por ejemplo, Edad se ha creado en Studio como una propiedad personalizada:

 

CreateUser_01

 

Para crear un usuario con propiedades personalizadas, utilice el siguiente ejemplo. Si necesita incluir otras propiedades personalizadas, inclúyalas dentro de la etiqueta UserConfiguration.

 

<BizAgiWSParam>

<Entities>

<WFUSER>

 <BasicInformation>

         <FullName>Tom Hall</FullName>

         <UserName>tomh</UserName>

         <Domain>agilityCorp</Domain>

         <ContactEmail>tomh@agilityCorp.com</ContactEmail>

         <Organizations>

                 <Organization>1</Organization>

         </Organizations>

 </BasicInformation>

 <UserConfiguration>

         <Age>35</Age>

 </UserConfiguration>

</WFUSER>

</Entities>

</BizAgiWSParam>

 

Si el nombre de la propiedad es incorrecto o no existe, Bizagi crea el usuario sin esa propiedad.

 

Si la propiedad de usuario personalizada es una relación con otra entidad, debe enviar la identificación del registro. Tenga en cuenta que los ID pueden ser diferentes entre el entorno de desarrollo y el de producción. Por ejemplo, tiene la siguiente propiedad de usuario:

 

CreateUser_02

 

Debe revisar el ID del registro que quiere enviar cuando se cree el usuario.

 

CreateUser_03

 

Por ejemplo, si desea crear un usuario con nivel de autoridad intermedio, debe enviar el ID = 2 como se muestra en el siguiente ejemplo. El nombre si la etiqueta es:

 

id + el nombre de la propiedad del usuario, por ejemplo, idAuthorityLevel.

 

<BizAgiWSParam>
<Entities>
<WFUSER>
  <BasicInformation>
    <FullName>Cam</FullName>
    <UserName>Cam</UserName>
    <Domain>domain</Domain>
    <ContactEmail>tomh@agilityCorp.com</ContactEmail>
    <Organizations>
        <Organization>1</Organization>
    </Organizations>
  </BasicInformation>
  <UserConfiguration>
    <idAuthorityLevel>2</idAuthorityLevel>
  </UserConfiguration>
</WFUSER>
</Entities>
</BizAgiWSParam>

 

Actualización de usuarios

Para actualizar usuarios, invoque el método llamado saveEntityAsString. Invoque y envíe la información a Bizagi como se muestra en los ejemplos a continuación:

 

Actualizar información simple de usuarios existentes

El siguiente ejemplo actualiza la información de uno de los usuario creados en el ejemplo anterior utilizando la definición de businessKey.

 

<BizAgiWSParam>

<Entities>

<WFUSER businessKey="userName='juliettel' AND domain='agilityCorp'">

 <fullName>Juliette Leroy-Brown</fullName>

 <userName>juliettel</userName>

 <domain>agilityCorp</domain>

 <enabled>1</enabled>

</WFUSER>

</Entities>

</BizAgiWSParam>

 

Observe que el campo que actualizamos es el nombre completo (fullName) y como no necesitamos actualizar otra información, podemos omitir dicha definición (es decir, se mantienen los valores).

El servicio web responderá exitosamente con el mismo mensaje de los ejemplos anteriores (ya sea creando por primera vez o actualizando, la respuesta envía el identificador de cada registro involucrado en la invocación).

 

Ejemplo de actualización de usuario con nuevas definiciones organizacionales

El siguiente ejemplo actualiza un usuario existente, atado a una nueva definición de área de la organización (podrá crear nuevos elementos que no tengan una relación mucho a muchos con la entidad de usuario).

 

<BizAgiWSParam>

<Entities>

<WFUSER businessKey="userName='juliettel' AND domain='agilityCorp'">

 <idArea>

         <areaName>Research</areaName>

         <areaDisplayName>Research and innovation</areaDisplayName>

         <areaDescription>In charge of developing new ideas</areaDescription>

 </idArea>

</WFUSER>

</Entities>

</BizAgiWSParam>

 

El servicio web mostrará una respuesta exitosa igual a la presentada previamente.

Observe que con este ejemplo, Bizagi crea de manera automática el ID para el área nueva, y se la asocia al usuario.

Como se menciona anteriormente, nuevas definiciones organizacionales para roles, habilidades, posiciones u organizaciones, deberán ser ingresadas manualmente en Bizagi antes de asociarlos a usuarios.

 

Actualizar una propiedad de usuario personalizada

Si tiene que actualizar una propiedad de usuario personalizada, debe enviar la etiqueta del nombre de la propiedad dentro del XML como en el siguiente ejemplo:

 

<BizAgiWSParam>

 <Entities>

         <WFUSER businessKey="userName='juliettel' AND domain='agilityCorp'">

                 <Age>35</Age>

         </WFUSER>

 </Entities>

</BizAgiWSParam>

 

Si la propiedad es una relación con una entidad, debe usar el Id del registro a actualizar. Por ejemplo, si tiene la propiedad de usuario de nivel de autoridad.

 

CreateUser_02

 

Debe revisar el id del registro que quiere actualizar.

 

CreateUser_03

 

Para actualizar un usuario con un nivel de autoridad intermedio, debe enviar el ID = 2 como se muestra en el siguiente ejemplo. El nombre de la etiqueta es:

 

id + el nombre de la propiedad del usuario, por ejemplo, idAuthorityLevel.

 

<BizAgiWSParam>

 <Entities>

         <WFUSER businessKey="userName='juliettel' AND domain='agilityCorp'">

                 <idAuthorityLevel>2</idAuthorityLevel>

         </WFUSER>

 </Entities>

</BizAgiWSParam>

 

Asignar Stakeholders a usuarios

Es posible añadir el nodo StakeHolders en su request para asignarle un Stakeholder a un usuario dado. El siguiente ejemplo hace uso de la definición businessKey para lograrlo:

 

<BizAgiWSParam>
<Entities>
<WFUSER businesskey="username='juliettel'">
  <StakeHolders>
      <stakeholderName1>
          <stakeholderAttribute>value</stakeholderAttribute>
      </stakeholderName1>
      <stakeholderName2>
          <dummy></dummy>
      </stakeholderName2>
  </StakeHolders>
</WFUSER>
</Entities>
</BizAgiWSParam>

 

Tenga en cuenta que los Stakeholders pueden o no contener atributos. En caso que desee actualizar esta información, el atributo debe ser añadido como un nodo del Stakeholder. En este caso el atributo stakeholderAttribute para stakeholderName1. En cambio, si el Stakeholder no contiene atributos o no se desea actualizar, se debe incluir un nodo dummy. Para este caso el nodo dummy para stakeholderName2.

 

Notas importantes

Considere:

Debe asegurarse de que los siguientes valores no estén repetidos en sus usuarios (estos valores deben ser únicos): contactEmail (Correo electrónico) y la combinación de domain (dominio) y username (nombre de usuario).

La propiedad Enabled (Habilitado) debe varias si un usuario en su repositorio está deshabilitado o no.

Para los proyectos on-premise de Bizagi, es importante que considere el número de usuarios licenciados (que limita directamente la cantidad de usuarios habilitados).

 

Por último, asegúrese de programar la invocación de este servicio web para asegurarse de que sus usuarios estén constantemente sincronizados (e.g, desactivados o que se tomen en consideración los usuarios nuevos).