Inicio Blog Mantenimiento de usuarios de Acumatica a través de Google Workspace

Mantenimiento de usuarios de Acumatica a través de Google Workspace

Proporcionamos capacidades de administración ampliadas sobre Single Sign-On (SSO) con Google mediante la integración de la base de usuarios, lo que permite a los administradores crear, activar y desactivar usuarios de Acumatica desde Google Workspace.
Leonardo Justiniano | 27 de octubre de 2022

Mantenimiento de usuarios de Acumatica a través de Google Workspace

Introducción

Uno de los retos a los que se enfrenta una empresa es gestionar la base de usuarios de sus sistemas de forma orquestada y segura. Muchos sistemas implementan la compatibilidad con plataformas estándar como Azure, AWS o Google para permitir una interacción fluida con esos sistemas proporcionando funciones como el inicio de sesión único (SSO).

Acumatica hasta ahora sólo proporciona soporte integrado para Microsoft Active Directory / Federation Services y Azure Active Directory. Además, proporcionan capacidades de inicio de sesión único con cuentas de Google y Microsoft, así como OneLogin a través de proveedores de Open ID. Particularmente con Google, presentaré una forma de ampliar esta capacidad y también proporcionar integración de la base de usuarios, permitiendo a los administradores crear, activar y desactivar usuarios de Acumatica desde Google Workspace.

Inicio de sesión único de Acumatica con Google (SSO)

Para activar el SSO, vaya a la opción de menú Gestión del sistema > Activar/Desactivar características. A continuación, busque y configure la opción de función correspondiente:

Mantenimiento de usuarios de Acumatica a través de Google Workspace

Una vez activada, en la página de inicio de sesión aparecerá la opción de Google para permitir el acceso a Acumatica con un solo inicio de sesión.

Mantenimiento de usuarios de Acumatica a través de Google Workspace

Acumatica permite la autoinscripción en SSO a través de la opción MI PERFIL

Mantenimiento de usuarios de Acumatica a través de Google Workspace

A continuación, ve a Identidades externas, selecciona Google y haz clic en USUARIO ASOCIADO.

Mantenimiento de usuarios de Acumatica a través de Google Workspace

El proceso de autenticación va a Google utilizando el "actual" sesión de usuario con Google Workspace. Una vez completado, el ID de cuenta se establece como identificador de la identidad especificada:

Mantenimiento de usuarios de Acumatica a través de Google Workspace

Este ID de cuenta (clave de usuario) se utiliza para identificar la sesión de Google actual del usuario al autenticarse con Google durante el proceso de un clic.

Este mecanismo sólo está disponible para el usuario normal. No está disponible para un administrador, lo que significa que no hay forma de asignar una identidad de Google a un usuario distinto del usuario actual. También es necesario tener el correo electrónico del usuario definido como parte del directorio de Google específico.

Este artículo presenta una alternativa para ampliar esta capacidad mediante

  • Tener la capacidad de definir usuarios en Google y luego crearlos automáticamente en Acumatica con su conjunto de Google Identity.
  • Permite que un administrador asigne una Google Identity específica a un usuario sin necesidad de autenticarse mediante 2FA.

Configuración de los requisitos de Visual Studio y Google

Lo primero es lo primero. ¿Cómo me conecto a Google? Para esta implementación he utilizado bibliotecas NuGet existentes proporcionadas por Google:

Mantenimiento de usuarios de Acumatica a través de Google Workspace

Lista NuGet. Esta implementación utiliza la versión 1.49.

Al añadir estas bibliotecas, se dispone de un conjunto de clases para implementar llamadas RESTAPI de forma amigable.

En segundo lugar, hay una lista de requisitos por parte de Google para permitir la integración de Acumatica con Google Workspace:

  1. Crear una cuenta de servicio
    Mantenimiento de usuarios de Acumatica a través de Google Workspace
    Pantalla Cuenta de servicio de Google
  1. Crear un archivo de clave privada para la cuenta de servicio. Soporté ambos formatos JSON y P12 (X.509 backward compatibility). El archivo se crea una vez para la descarga. Después de eso, no hay opción para volver a crearlo.
  2. Cree un grupo de espacios de trabajo. El objetivo es sincronizar los usuarios de Google que pertenezcan a este grupo. Cualquier otro usuario será ignorado.
  3. Designe una cuenta de acceso. Se utilizará para consultar el Directorio de Google

Almacenamiento de archivos de claves privadas en Acumatica

Podría pensar en cargar el archivo en Acumatica y ya está. Así es, pero necesito tener el control del archivo porque es necesario para interactuar con los puntos finales de Google Workspace. Para ello, todos los parámetros obligatorios y opcionales descritos anteriormente, además del archivo de clave privada, deben almacenarse en Acumatica a través de una pantalla de configuración.

Para restringir el acceso a la opción Archivos en la pantalla, sólo necesito establecer la siguiente opción como false:

Mantenimiento de usuarios de Acumatica a través de Google Workspace

Para implementar una carga controlada del archivo, se añade un panel de carga a la pantalla:

GIST: https://gist.github.com/tac-ljustiniano/74bfe34432846dea1815d89d44a76380

Conexión a Google

Para conectarse a Google Workspace es necesario especificar el ámbito de acceso. Dado que Google es la fuente de verdad para la creación de usuarios, sólo necesito acceso de sólo lectura a usuarios y grupos. Google proporciona varias opciones a través de la clase DirectoryService.Scope. El resto es utilizar los datos del archivo Private Key para la conexión.

GIST: https://gist.github.com/tac-ljustiniano/69a374543c953d0206078dc22d094d22

Recuperación de usuarios

Hay 2 lugares de verificación para los usuarios:

1. Grupo específico de usuarios de Google. Uno de los requisitos opcionales es la definición de un grupo en el Directorio de Google. Al tener un grupo la administración de usuarios se facilita con solo asignar los usuarios de Google que se crearán en Acumatica a ese grupo específico. La definición de la URL del grupo es un parámetro de configuración.

Para recuperar la lista de miembros del grupo utilizo la clase MembersResource.ListRequest:

GIST: https://gist.github.com/tac-ljustiniano/a5962defd78ba5c4b41da107028c900f

2. Directorio de usuarios global. Abarca todas las cuentas de Google. Si no se especifica ningún grupo, no hay otra opción que sincronizar contra él.

Para recuperar la lista de usuarios del directorio global de Google utilizo la clase UsersResource.ListRequest:

GIST: https://gist.github.com/tac-ljustiniano/27bfcd08a3b7e3c6f8ed975ae7068638

La paginación es necesaria ya que, por diseño, la API de Google entrega un subconjunto de registros por solicitud. También se puede realizar una consulta de usuario único utilizando el correo electrónico principal como clave.

Sincronización de usuarios de Acumatica

Al ampliar la pantalla Usuarios para añadir una acción que asocie el usuario seleccionado a una cuenta del directorio de Google, el usuario seleccionado se sincronizará con el directorio de Google cuando se invoque la acción. Dicha acción se sitúa en el contexto de IDENTIDADES EXTERNAS

GIST: https://gist.github.com/tac-ljustiniano/76d8930ee0b2d849fc8077fa8159b5b8

Una versión más extendida para crear, actualizar o deshabilitar usuarios se crea para procesar la lista de usuarios en Acumatica de acuerdo a un criterio, usando el email del usuario (email primario) como clave:

user@domain.com

La parte "usuario" se convertirá en el login de Acumatica.

Sería necesario procesar una pantalla que invoque este proceso para programar ese proceso de sincronización y tenerlo desatendido.

Conclusión

Utilizando la API de Google y configurando las cuentas de acceso adecuadas para el espacio de trabajo de Google, los administradores tienen la capacidad de sincronizar la información de SSO para diferentes usuarios. Además, se puede utilizar el proceso de sincronización programada para tener una administración desatendida de los usuarios en Acumatica. Los departamentos de TI solo tienen que asignar usuarios a un grupo especial y se crearán en Acumatica. Todavía se necesita más trabajo para ampliar el alcance hacia Acumatica Roles. Actualmente esta implementación crea los usuarios con acceso básico en Acumatica. Aún se deben otorgar permisos adicionales para permitir que esos usuarios interactúen con sus respectivos módulos.

¡Feliz codificación!

Autor del blog

La carrera de Leonardo se ha extendido durante más de dos décadas como desarrollador full-stack con una sólida formación en .NET y SQL Server. Ha trabajado en muchos ámbitos empresariales y se ha centrado en implementaciones e integraciones de ERP, consultoría e implementación de automatización de procesos empresariales, y ha dirigido equipos de desarrollo de software. Con experiencia de trabajo en varias industrias/culturas, couching de negocios y formación, así como un enfoque en el aprendizaje continuo de nuevas tecnologías, Leonardo ha construido un conjunto de herramientas robustas.

Reciba las actualizaciones del blog en su bandeja de entrada.