Introduction
L’un des défis d’une entreprise est de gérer la base d’utilisateurs de ses systèmes de manière orchestrée et sécurisée. De nombreux systèmes implémentent la prise en charge des plates-formes standard telles que Azure, AWS ou Google pour permettre une interaction transparente avec ces systèmes en fournissant des fonctionnalités telles que l’authentification unique (SSO).
Jusqu’à présent, Acumatica ne fournit qu’une prise en charge intégrée de Microsoft Active Directory / Federation Services et Azure Active Directory. De plus, ils fournissent des fonctionnalités d’authentification unique avec les comptes Google et Microsoft, ainsi que OneLogin via des fournisseurs Open ID . En particulier avec Google, je présenterai un moyen d’étendre cette capacité et de fournir également l’intégration de la base d’utilisateurs, permettant aux administrateurs de créer, d’activer et de désactiver les utilisateurs d’Acumatica à partir de Google Workspace.
Acumatica Single Sign-On avec Google (SSO)
Pour activer l’ESSE, accédez à l’option de menu Gestion du système > Activer/Désactiver les fonctionnalités . Ensuite, recherchez et définissez l’option de fonctionnalité respective:
Une fois qu’il est activé, sur la page de connexion apparaîtra l’option Google pour autoriser un accès de connexion à Acumatica.
Acumatica permet de s’inscrire à SSO via l’option MY PROFILE
Accédez ensuite à Identités externes, puis sélectionnez Google et cliquez sur ASSOCIER L’UTILISATEUR
Le processus d’authentification va à Google en utilisant la session utilisateur « actuelle » avec Google Workspace. Une fois terminé, l’ID de compte est défini comme identificateur de l’identité spécifiée :
Cet ID de compte (clé utilisateur) est utilisé pour identifier la session Google en cours de l’utilisateur tout en s’authentifier avec Google pendant le processus en un clic.
Ce mécanisme n’est disponible que pour l’utilisateur régulier. Il n’est pas disponible pour un administrateur, ce qui signifie qu’il n’y a aucun moyen d’attribuer une identité Google à un autre utilisateur que l’utilisateur actuel. Il est également nécessaire d’avoir l’e-mail de l’utilisateur défini comme faisant partie de l’annuaire Google ciblé.
Cet article présente une alternative pour élargir cette capacité en
- Avoir la possibilité de définir les utilisateurs dans Google, puis de les créer automatiquement dans Acumatica avec son ensemble Google Identity.
- Permettre aux administrateurs d’attribuer une identité Google spécifique à un utilisateur par un administrateur sans avoir besoin de s’authentifier à l’aide de 2FA.
Définition des exigences de Visual Studio et de Google
La première chose d’abord. Comment puis-je me connecter à Google ? Pour cette implémentation, j’ai utilisé les bibliothèques NuGet existantes fournies par Google:
Liste NuGet. Cette implémentation a utilisé la version 1.49.
En ajoutant ces bibliothèques, un ensemble de classes devient disponible pour implémenter les appels RESTAPI de manière conviviale.
Deuxièmement, il existe une liste d’exigences du côté de Google pour permettre l’intégration d’Acumatica avec Google Workspace:
- Créer un compte de service
Écran Compte de service Google
- Créez un fichier de clé privée pour le compte de service. J’ai pris en charge les formats JSON et P12 (rétrocompatibilité X.509). Le fichier est créé une fois pour le téléchargement. Après cela, il n’y a pas d’option pour le recréer.
- Créez un groupe d’espace de travail. L’objectif est de synchroniser les utilisateurs de Google qui appartiennent à ce groupe. Tout autre utilisateur sera ignoré.
- Désignez un compte d’accès. Il sera utilisé pour interroger l’Annuaire Google
Stockage d’un fichier de clé privée dans Acumatica
Vous pourriez penser à télécharger le fichier dans Acumatica et c’est tout. En effet, c’est le cas, mais j’ai besoin d’avoir le contrôle du fichier car il est nécessaire d’interagir avec les points de terminaison Google Workspace. À cet effet, tous les paramètres requis et facultatifs décrits ci-dessus, ainsi que le fichier de clé privée, doivent être stockés dans Acumatica via un écran de configuration.
Pour restreindre l’accès à l’option Fichiers à l’écran, il me suffit de définir l’option suivante comme fausse:
Pour implémenter un téléchargement contrôlé du fichier, un panneau de téléchargement est ajouté à l’écran :
GIST : https://gist.github.com/tac-ljustiniano/74bfe34432846dea1815d89d44a76380
Connexion à Google
La connexion à Google Workspace nécessite de spécifier l’étendue d’accès. Parce que Google est la source de vérité pour la création d’utilisateurs, je n’ai besoin que d’un accès en lecture seule aux utilisateurs et aux groupes. Google propose plusieurs options via la classe DirectoryService.Scope. Le reste utilise les données du fichier de clé privée pour la connexion.
GIST: https://gist.github.com/tac-ljustiniano/69a374543c953d0206078dc22d094d22
Récupération d’utilisateurs
Il y a 2 endroits à vérifier pour les utilisateurs:
1. Groupe d’utilisateurs Google spécifique. L’une des exigences facultatives est la définition d’un groupe dans l’Annuaire Google. En ayant une administration d’utilisateur de groupe est rendue plus facile en affectant simplement les utilisateurs de Google qui seront créés dans Acumatica à ce groupe spécifique. La définition d’URL de groupe est un paramètre d’installation.
Pour récupérer la liste des membres du groupe, j’utilise la classe MembersResource.ListRequest :
GIST : https://gist.github.com/tac-ljustiniano/a5962defd78ba5c4b41da107028c900f
2. Répertoire mondial des utilisateurs. Il couvre tous les comptes Google. Si aucun groupe n’est spécifié, il n’y a pas d’autre choix que de synchroniser avec lui.
Pour récupérer la liste des utilisateurs à partir de l’annuaire Google global, j’utilise la classe UsersResource.ListRequest:
GIST : https://gist.github.com/tac-ljustiniano/27bfcd08a3b7e3c6f8ed975ae7068638
La pagination est nécessaire car, de par sa conception, l’API Google fournit un sous-ensemble d’enregistrements par demande. Une requête d’utilisateur unique peut également être implémentée en utilisant l’e-mail principal comme clé.
Synchronisation des utilisateurs d’Acumatica
En étendant l’écran Utilisateurs pour ajouter une action pour associer l’utilisateur sélectionné à un compte d’annuaire Google, l’utilisateur sélectionné sera synchronisé avec l’annuaire Google lorsque l’action est appelée. Une telle action est placée dans le contexte des IDENTITÉS EXTÉRIEURES
GIST : https://gist.github.com/tac-ljustiniano/76d8930ee0b2d849fc8077fa8159b5b8
Une version plus étendue pour créer, mettre à jour ou désactiver des utilisateurs est créée pour traiter la liste des utilisateurs dans Acumatica selon un critère, en utilisant l’e-mail de l’utilisateur (e-mail principal) comme clé:
user@domain.com
La partie « utilisateur » deviendra la connexion Acumatica.
Un traitement d’un écran qui appelle ce processus serait nécessaire pour planifier ce processus de synchronisation et le laisser sans surveillance.
Conclusion
À l’aide de l’API Google et de la définition des comptes d’accès appropriés à Google Workspace, les administrateurs ont la possibilité de synchroniser les informations d’ESE pour différents utilisateurs. En outre, le processus de synchronisation planifié peut être utilisé pour avoir une administration sans surveillance des utilisateurs dans Acumatica. Les services informatiques n’ont besoin que d’affecter des utilisateurs à un groupe spécial et ils seront créés dans Acumatica. D’autres travaux sont encore nécessaires pour étendre la portée vers les rôles Acumatica. Actuellement, cette implémentation crée les utilisateurs avec un accès de base à Acumatica. Des autorisations supplémentaires doivent encore être accordées pour permettre à ces utilisateurs d’interagir avec leurs modules respectifs.
Bon codage!