Synchronisation des utilisateurs avec Azure AD/Active Directory
Cet article est disponible en format vidéo ainsi qu'un article écrit contenant plus de détails.
La synchronisation Azure AD / Active Directory est capable de créer, de mettre à jour et de désactiver automatiquement des utilisateurs à partir d'Azure AD ou d'Active Directory.
Nous avons créé le module PowerShell 'BrightBookingUserAdminTools', qui gère cette logique. En créant une tâche (planifiée) avec les bonnes commandes PowerShell, vous pouvez envoyer régulièrement ces informations à GoBright depuis votre serveur.
Remarque : GoBright ne reçoit des données que par l'intermédiaire de BrightBookingUserAdminTools. GoBright n'est pas autorisé à renvoyer des données à Azure AD / Active Directory.
GoBright en tant qu'application d'entreprise dans Azure AD
Avant de poursuivre la section ci-dessous, nous aimerions préciser que vous pouvez configurer GoBright comme une application d'entreprise dans Azure AD. Cela vous permettra de créer/mettre à jour les utilisateurs de la plateforme automatiquement et d'activer le SSO facilement. Nous vous recommandons vivement de suivre les étapes de l'article ci-dessous avant de poursuivre : GoBright en tant qu'application d'entreprise (Azure AD)
Introduction
La logique d'intégration est disponible en tant que module PowerShell, via PowerShellGallery, sous le nom de 'BrightBookingUserAdminTools'.
Le module PowerShell 'BrightBookingUserAdminTools' doit être installé sur une machine (serveur) de votre domaine.
Une fois configuré, il suit les étapes suivantes, à chaque fois qu'il s'exécute :
- Obtenez les utilisateurs d'Azure AD ou d'Active Directory, filtrés selon vos préférences, par exemple, filtrés par appartenance à un groupe.
- Ces utilisateurs sont envoyés à GoBright et sont immédiatement créés ou mis à jour.
- Si l'utilisateur est désactivé dans Azure AD ou Active Directory, il sera également désactivé dans GoBright
- Les utilisateurs qui ne sont pas lus dans Azure AD ou Active Directory ne sont pas non plus mis à jour dans le fichier GoBright
Suivez les étapes ci-dessous pour installer et configurer l'intégration !
Étape 1
Le module BrightBookingUserAdminTools a les dépendances suivantes :
- PowerShell version 5 ou supérieure
- Les modules PowerShell suivants :
- Galerie PowerShell
- ActiveDirectory
- Azure AD
- La machine (serveur) doit être liée à votre domaine Windows.
Veuillez suivre les étapes suivantes pour installer les dépendances :
- Connectez-vous à la machine (serveur) sur laquelle vous voulez installer la tâche. (cette machine doit être liée au domaine Windows).
- Lancez PowerShell sur cette machine, en tant qu'"administrateur" :
- Vérifiez si PowerShell 5 est installé :
- Exécutez la commande suivante :
$PSVersionTable.PSVersion
- Dans le résultat que vous obtenez, le "Major" doit être égal ou supérieur à "5".
- Si le 'Majorest inférieur à5', suivez les étapes suivantes :
- Installer Windows Management Framework 5 (cela inclut PowerShell 5) :
Télécharger Windows Management Framework 5 - Note 1 : si vous obtenez l'erreur "La mise à jour n'est pas applicable à votre ordinateur", vous avez probablement sélectionné le mauvais téléchargement, veuillez vous référer à cet article.
- Note 2 : Windows Management Framework 5 dépend de .NET Framework 4.5.
- Note 3 : Un redémarrage est probablement nécessaire.
- Après l'installation, veuillez vérifier si le 'Majorest5ou plus :
$PSVersionTable.PSVersion
- Installer Windows Management Framework 5 (cela inclut PowerShell 5) :
- Exécutez la commande suivante :
- Installez le module PowerShellGallery PowerShell :
- Exécutez les commandes suivantes dans PowerShell (en tant qu'administrateur)
- Installez le NuGet PackageProvider :
Install-PackageProvider -Name NuGet -MinimumVersion 2.8.5.201 -Force
- Configurez PowerShellGallery comme une source de confiance :
Set-PSRepository -Name PSGallery -InstallationPolicy Trusted
- Installez le module PowerShellGet :
Import-Module -Name PowerShellGet
- Si vous voulez vous synchroniser avec Active Directory: Installer le module ActiveDirectory PowerShell :
- Le module ActiveDirectory PowerShell fait partie des outils d'administration de serveur à distance (RSAT).
- Veuillez suivre les étapes suivantes pour installer les Outils d'administration du serveur à distance (RSAT)
- Si vous voulez vous synchroniser avec Azure AD: Installez le module Azure AD PowerShell :
- Exécutez les commandes suivantes dans PowerShell (en tant qu'administrateur)
- Installez le module Azure AD :
Install-Module -Name AzureAD
Étape 2
Installez ou mettez à jour le module PowerShell BrightBookingUserAdminTools :
Install-Module -Name BrightBookingUserAdminTools -Force
La commande '-Force' permet de s'assurer que la dernière version du module est installée même si une installation antérieure existe. Si le module était déjà installé, la session PowerShell devra être redémarrée.
Étape 3
Pour pouvoir synchroniser les utilisateurs, vous devez obtenir les informations suivantes dans le portail GoBright :
- L'URL de l'API et la clé de l'API
- Le nom de l'intégration qui doit être liée aux utilisateurs.
Suivez ces étapes pour trouver l'URL de l'API et la clé de l'API :
- Connectez-vous avec un compte de gestionnaire sur le portail GoBright .
- Allez dans le centre d'administration > Intégrations > Accès API
- Générez une clé API en cliquant sur le bouton "Ajouter". Choisissez le type "manager" et entrez une description pour une référence ultérieure.
- Remarque : veillez à sauvegarder la clé API, car il n'y a aucun moyen de la récupérer.
- L'URL de l'API est l'URL de votre environnement GoBright qui se trouve dans la barre d'URL de votre navigateur et sous Centre d'administration > Intégrations > Accès API: API url https://[tenant-id].gobright.cloud/
Suivez ces étapes pour trouver le nom de l'intégration :
- Connectez-vous avec un compte de gestionnaire sur le portail GoBright .
- Allez dans le centre d'administration > Intégrations
- Copiez le nom de l'intégration (Exchange/Office 365) qui doit être utilisée pour relier les utilisateurs à la base de données.
Le nom de l'intégration, l'URL de l'API et la clé de l'API sont nécessaires dans les étapes suivantes.
Étape 4
Dans la dernière étape, vous construirez le script réel pour indiquer au module PowerShell GoBright les utilisateurs que vous souhaitez obtenir et pousser vers votre environnement GoBright . Ceci peut être fait avec Azure AD ou Active Directory.
La plateforme GoBright impose une communication utilisant TLS 1.2. Selon le système que vous utilisez, cela peut ne pas se faire automatiquement. Consultez le code ci-dessous et implémentez-le dans chaque script PowerShell qui communique avec GoBright.
Ajoutez également la préférence $ErrorActionPreference pour vous assurer que le script s'arrête dès qu'une erreur se produit. N'oubliez pas d'ajouter les lignes ci-dessous dans chacun de vos scripts.
[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12
$ErrorActionPreference = "Stop"
Choisissez ci-dessous l'une des explications du scénario qui s'applique à votre situation.
Étape 4.1 : Se connecter à Azure AD
Lancez PowerShell et connectez-vous à Azure AD via la commande standard "Connect-AzureAD".
Étape 4.2 : tester la sélection des utilisateurs
La commande pour obtenir les informations d'Active Directory et les traiter dans BrightBooking est la suivante :
Get-AzureADUser -All $true [optional: filter] | Push-AzureADUsersToBB [optional: specific username/pincode field] -BrightBookingApiUrl '[API url]' -BrightBookingApiKey '[API key]' -BrightBookingIntegrationName '[name of integration as created in Admin center > Integrations]'
Vous pouvez utiliser les paramètres suivants dans la commande 'Push-AzureADUsersToBB' :
-ADUserSpecificUsername UserPrincipalName |
Par défaut, l'utilisateur s'authentifie avec l'adresse électronique principale de l'utilisateur sur le serveur Microsoft Exchange ou Office365. Indiquez cette valeur pour utiliser une méthode différente d'authentification de l'utilisateur auprès du serveur Microsoft Exchange ou Office365 : |
-ADUserPincodePropertyName (facultatif) |
Indiquez le nom d'un champ d'Active Directory que vous souhaitez utiliser comme "code postal" (il doit être numérique, comporter au moins 4 chiffres et être unique). |
-ADUserMobilePropertyName (facultatif) |
Spécifiez le nom d'un champ dans Active Directory que vous voulez utiliser pour obtenir le numéro de téléphone mobile des utilisateurs (par exemple pour la notification de la réception numérique) |
-ADUserNFCIdPropertyName (facultatif) |
Indiquez le nom d'un champ dans Active Directory que vous voulez utiliser pour obtenir l'identifiant NFC pour cet utilisateur. |
-ADUserDefaultCostCenterId OrNamePropertyName (facultatif) |
Spécifiez le nom d'un champ dans Active Directory que vous voulez utiliser pour définir le centre de coûts par défaut pour cet utilisateur. Vous pouvez spécifier le nom ou l'id ('guid') du centre de coûts, le nom étant le plus couramment utilisé. |
-GroupUserRoleMapping |
Ce paramètre vous donne la possibilité d'attribuer un rôle à un utilisateur dans la plate-forme, en fonction de l'appartenance à un groupe dans Azure AD. Voir l'exemple ci-dessous. |
-UserRoleNameForNewUsers (facultatif) |
Nom facultatif d'un rôle existant dans le portail à utiliser lorsque de nouveaux utilisateurs sont créés par cette synchronisation. |
-DeactivateExistingUsersIn SameIntegrationThatAreNotLoaded (facultatif) |
Commutateur facultatif permettant de désactiver automatiquement les utilisateurs qui ne font plus partie des utilisateurs sélectionnés dans ActiveDirectory, mais qui existent toujours dans le portail. |
-IncludeUsersWithoutAzureAD AssignedLicensesOrAssignedPlans |
Inclure les utilisateurs qui n'ont pas de licences Azure AD attribuées (qui seraient autrement incluses comme inactives) ou de plans Azure AD attribués (qui seraient autrement totalement exclus). Notez que l'inclusion de ces utilisateurs peut entraîner l'apparition d'"utilisateurs" involontaires tels que des comptes de service, des utilisateurs de boîtes aux lettres, etc. Cela peut être atténué en filtrant les utilisateurs avant de les introduire dans cette commande. |
-BrightBookingApiUrl (obligatoire) |
L'url de l'API, comme indiqué à l'étape 3. |
-BrightBookingApiKey (obligatoire) |
L'url de l'API, comme indiqué à l'étape 3. |
-BrightBookingIntegrationName (obligatoire) |
L'url de l'API, comme indiqué à l'étape 3. |
-WhatIf (facultatif) |
Utilisez le paramètre '-WhatIf' pour tester et voir, mais pas pour envoyer des données à votre environnement GoBright . |
Vous trouverez ci-dessous plusieurs exemples de commandes. Vous pouvez les adapter à votre situation.
Ces commandes ne mettront pas encore à jour les utilisateurs dans le système. Il s'agit donc de commandes de test, car elles incluent le paramètre '-WhatIf'.
Exemples de commandes de test :
Traiter tous les utilisateurs dans Azure AD à GoBright:
Get-AzureADUser -All $true | Push-AzureADUsersToBB -BrightBookingApiUrl '[API url]' -BrightBookingApiKey '[API key]' -BrightBookingIntegrationName '[name of integration as created in Admin center > Integrations]' -WhatIf
Traiter les utilisateurs dont le NUP se termine par 'yourdomain.com' vers GoBright:
Get-AzureADUser -All $true | where {$_.userprincipalname -like "*yourdomain.com"} | Push-AzureADUsersToBB -BrightBookingApiUrl '[API url]' -BrightBookingApiKey '[API key]' -BrightBookingIntegrationName '[name of integration as created in Admin center > Integrations]' -WhatIf
Traitez les utilisateurs avec un identifiant NFC et un code pin dans un attribut personnalisé, notez que le nom de l' attribut d'extension doit être identique à celui dans Azure AD :
$users_all_import = Get-AzureADUser -All $true [optional: filter]
$users_all = @()
$pincodeField = '[Extension attribute here]'
$NFCField = '[Extension attribute here]'
Foreach ($user in $users_all_import) {
$getExtensionProperty = $user | Select-Object -ExpandProperty ExtensionProperty
If ($getExtensionProperty.$pincodeField) {
$pin = (Get-AzureADUserExtension -ObjectId $user.ObjectId).get_item($pincodeField)
} Else {
$pin = ''
}
If ($getExtensionProperty.$NFCField) {
$nfc = (Get-AzureADUserExtension -ObjectId $user.ObjectId).get_item($NFCField)
} Else {
$nfc = ''
}
$user | Add-Member UserPincode $pin -Force
$user | Add-Member UserNFC $nfc -Force
$users_all += $user
}
$users_all | Push-AzureADUsersToBB -ADUserPincodePropertyName UserPincode -ADUserNFCIdPropertyName UserNFC -BrightBookingApiUrl '[API url]' -BrightBookingApiKey '[API key]' -BrightBookingIntegrationName '[name of integration as created in Admin center > Integrations]' -WhatIf
Traitez les utilisateurs et ajoutez les rôles d'utilisateur dans GoBright en fonction de leur appartenance à un groupe dans Azure AD :
$groupToRoleMapping = @()
$groupToRoleMapping += @ # match specific users that belong to a group for Meet-Work-Visit
$groupToRoleMapping += @ # match specific users that belong to a group for Meet-Work-Visit
$groupToRoleMapping += @ # match specific users that belong to a group for Meet-Work-Visit
$groupToRoleMapping += @ # match specific users that belong to a group for View
$groupToRoleMapping += @ # **special case** this line matches for every user, because of the 'MatchType', and is needed when you want to have a generic role for every user
$roleNameDefaultIfNoGroupMatched = "Regular user"
$users_all = Get-AzureADUser -All $true
$users_all | Push-AzureADUsersToBB -UserDefaultRoleName $roleNameDefaultIfNoGroupMatched -GroupUserRoleMapping $groupToRoleMapping -BrightBookingApiUrl '[API url]' -BrightBookingApiKey '[API key]' -BrightBookingIntegrationName '[name of integration as created in Admin center > Integrations]' -WhatIf
Traiter tous les utilisateurs sauf ceux qui sont membres d'un groupe spécifique dans Azure AD :
$excludedGroups = @()
$excludedGroups += '[GroupName1]'
$excludedGroups += '[GroupName2]'
$excludedGroups += '[GroupName3]'
$ADGroups = Get-AzureADGroup -All $true | Where-Object { $excludedGroups -notcontains $_.DisplayName }
$users_all = $ADGroups | Get-AzureADGroupMember -All $true
$users_all | Push-AzureADUsersToBB -BrightBookingApiUrl '[API url]' -BrightBookingApiKey '[API key]' -BrightBookingIntegrationName '[name of integration as created in Admin center > Integrations]' -WhatIf
Étape 4.2 : Exécuter la synchronisation réelle
Une fois que la liste des utilisateurs est correctement filtrée, vous pouvez exécuter la synchronisation réelle en supprimant le paramètre '-WhatIf'.
Exécutez maintenant la même commande, mais sans '-WhatIf' et elle traitera les utilisateurs dans votre environnement GoBright .
Étape 4.3 : Planifiez l'intégration pour qu'elle s'exécute périodiquement via le planificateur de tâches de Windows.
Pour pouvoir exécuter le script sans surveillance, vous devez vous connecter automatiquement.
Méthode conseillée de connexion sans surveillance :
La méthode conseillée pour effectuer une connexion sans surveillance consiste à créer une application enregistrée dans Azure AD et à se connecter à cette application :
#script for creating user, cert, and get tenantid #getting data for daily script
Connect-AzureAD $pwd = "Password to encrypt the cert" $subject = "GoBright_unattendedlogin" # may not be longer than 15 characters = the name certificate and app $tmppath = "C:tmp" $certname= "unattendedlogin_azuread.pfx" $fullcertpath = "C:tmpunattendedlogin.pfx" $IdentifierUris = "https://www.fillInYourOwnDomain.com" # Here you need to fill in your own domain name
$thumb = (New-SelfSignedCertificate -CertStoreLocation Cert:CurrentUserMy -subject $subject -KeyExportPolicy Exportable -NotAfter (Get-Date).AddYears(10) -Type CodeSigningCert -KeySpec Signature).Thumbprint $pwd = ConvertTo-SecureString -String $pwd -Force -AsPlainText if ($tmppath -eq $false) Export-PfxCertificate -cert "cert:CurrentUsermy$thumb" -FilePath $fullcertpath -Password $pwd
$cert = New-Object System.Security.Cryptography.X509Certificates.X509Certificate($fullcertpath, $pwd) $keyValue = [System.Convert]::ToBase64String($cert.GetRawCertData())
$application = New-AzureADApplication -DisplayName $subject -IdentifierUris $IdentifierUris New-AzureADApplicationKeyCredential -ObjectId $application.ObjectId -CustomKeyIdentifier $subject -Type AsymmetricX509Cert -Usage Verify -Value $keyValue $sp=New-AzureADServicePrincipal -AppId $application.AppId Add-AzureADDirectoryRoleMember -ObjectId (Get-AzureADDirectoryRole | where-object {$_.DisplayName -eq "Directory Readers"}).Objectid -RefObjectId $sp.ObjectId
$tenantid = Get-AzureADTenantDetail | Select ObjectId -ExpandProperty ObjectId $appid = $application.AppId $thumb $tenantid $appid
#copy data from thumb, tenantid, appid to daily user sync script
Pour plus d'informations, veuillez cliquer sur ce lien.
À des fins de test, vous pouvez utiliser la méthode suivante pour vous connecter automatiquement à Azure AD avec la méthode de connexion sans surveillance et tester votre script avant d'exécuter le script de synchronisation des utilisateurs proprement dit :
$tenantid = "[fill in your tenant id from the output of the first script]" $thumb = "[fill in your thumb id from the output of the first script]" $appid = "[fill in your appid from the output of the first script]"
Connect-AzureAD -TenantId $tenantid -ApplicationId $appid -CertificateThumbprint $thumb
[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12 $ErrorActionPreference = "Stop"
$users_all = Get-AzureADUser -All $true | Where-Object {$_.userprincipalname -like "*someDomainname.com"} $users_all | Push-AzureADUsersToBB -UserDefaultRoleName $roleNameDefaultIfNoGroupMatched -GroupUserRoleMapping $groupToRoleMapping -DeactivateExistingUsersInSameIntegrationThatAreNotLoaded -BrightBookingApiUrl '[API url]' -BrightBookingApiKey '[API key]' -BrightBookingIntegrationName '[name of integration as created in Admin center > Integrations]' -WhatIf
Remarque : si vous obtenez une erreur dans PowerShell indiquant que les droits sont insuffisants pour exécuter le script, vous devez vérifier les droits à ajouter à l'application. Pour plus d'informations, veuillez lire l'article suivant de Microsoft "Step 5 : Assign Azure AD roles to the application " : https://docs.microsoft.com/en-us/powershell/exchange/app-only-auth-powershell-v2?view=exchange-ps
Ensuite, suivez ces étapes pour synchroniser les utilisateurs depuis Active Directory selon un calendrier :
- Prenez la commande que vous avez composée (voir les étapes précédentes), et enregistrez-la dans un fichier .ps1 :
- Créez un fichier .ps1 (par exemple UsersToBrightBooking.ps1) dans un dossier de votre choix.
- Ouvrez le fichier avec un éditeur, par exemple 'notepad'.
- Collez le script de connexion pour vous connecter automatiquement à votre Azure AD
- Collez la commande complète dans le fichier
- Sauvegarder le fichier
- Exécuter le fichier pour voir s'il est réussi
- Créez une tâche dans le planificateur de tâches de Windows :
- Ouvrir le planificateur de tâches de Windows
- Créer une tâche
- Définissez un calendrier, par exemple une fois par jour ou toutes les 4 heures.
- Ajouter une action "Démarrer un programme" :
- Programme/script :
Powershell.exe - Paramètres :
-windowstyle minimized -c "powershell -c .[Nom du fichier .ps1 créé] -verbose >> ExportToGoBright_Output.txt 2>&1″. - Start in :
Remplissez le champ 'start in' avec l'emplacement du script, par exemple :C:scripts
- Programme/script :
Étape 4.1 : Tester la sélection des utilisateurs
La commande pour obtenir l'information d'Active Directory et la traiter dans GoBright est :
Push-ADUsersToBB [filter] [optional: specific username/pincode field] -BrightBookingApiUrl '[API url]' -BrightBookingApiKey '[API key]' -BrightBookingIntegrationName '[name of integration as created in Admin center > Integrations]'
Vous pouvez utiliser les paramètres suivants dans la commande 'Push-ADUsersToBB' :
-Filtre (obligatoire) |
La condition de filtrage pour filtrer les utilisateurs que vous voulez synchroniser(plus de documentation disponible). |
-SearchBase (facultatif) |
Spécifie le chemin d'accès à Active Directory sous lequel la recherche doit être effectuée(plus de documentation disponible). |
-ADSpecificUsername |
Par défaut, l'utilisateur s'authentifie avec l'adresse e-mail principale de l'utilisateur auprès du serveur Microsoft Exchange ou Office365. Fournissez ces valeurs pour utiliser une méthode différente d'authentification de l'utilisateur au serveur Microsoft Exchange ou Office365 : |
-ADUserPincodePropertyName (facultatif) |
Indiquez le nom d'un champ dans Active Directory que vous souhaitez utiliser comme "code postal" (il doit être numérique, comporter au moins 4 chiffres et être unique). |
-ADUserMobilePropertyName (facultatif) |
Indiquez le nom d'un champ dans Active Directory que vous souhaitez utiliser pour obtenir le numéro de téléphone mobile des utilisateurs (par exemple, pour la notification de la réception numérique) |
-ADUserNFCIdPropertyName (facultatif) |
Indiquez le nom d'un champ dans Active Directory que vous voulez utiliser pour obtenir l'identifiant NFC pour cet utilisateur. Veuillez noter qu'il doit être au format HEX, par ex : XX:XX:XX:XX:XX:XX:XX. |
-ADUserDefaultCostCenterId OrNamePropertyName (facultatif) |
Spécifiez le nom d'un champ dans Active Directory que vous voulez utiliser pour définir le centre de coûts par défaut pour cet utilisateur. Vous pouvez spécifier le nom ou l'id ('guid') du centre de coûts, le nom étant le plus couramment utilisé. |
-UserRoleNameForNewUsers (facultatif) |
Nom facultatif d'un rôle existant dans la plate-forme à utiliser lorsque de nouveaux utilisateurs sont créés par cette synchronisation. |
-UserDefaultRoleName (facultatif) |
Définir le nom de rôle par défaut pour tous les utilisateurs qui n'ont pas de correspondance dans le 'GroupUserRoleMapping' (voir ci-dessous). |
-GroupUserRoleMapping (facultatif) |
Ce paramètre vous donne la possibilité d'attribuer un rôle à un utilisateur dans la plate-forme, sur la base de l'appartenance à un groupe dans l'ActiveDirectory. Voir l'exemple ci-dessous. |
-DeactivateExistingUsersIn SameIntegrationThatAreNotLoaded (facultatif) |
Commutateur facultatif permettant de désactiver automatiquement les utilisateurs qui ne font plus partie des utilisateurs sélectionnés dans ActiveDirectory, mais qui existent toujours dans le portail. |
-BrightBookingApiUrl (obligatoire) |
L'url de l'API, comme indiqué à l'étape 3. |
-BrightBookingApiKey (obligatoire) |
L'url de l'API, comme indiqué à l'étape 3. |
-BrightBookingIntegrationName (obligatoire) |
L'url de l'API, comme indiqué à l'étape 3. |
-WhatIf (facultatif) |
Utilisez le paramètre '-WhatIf' pour tester et voir, mais pas pour envoyer des données à votre environnement GoBright . |
Vous trouverez ci-dessous plusieurs exemples de commandes. Vous pouvez les adapter à votre situation.
Ces commandes ne mettront pas encore à jour les utilisateurs dans le système. Il s'agit donc de commandes de test, car elles incluent le paramètre '-WhatIf'.
Exemples de commandes de test :
Traiter les utilisateurs dont le NUP se termine par 'yourdomain.com' :
Push-ADUsersToBB -Filter 'UserPrincipalName -like "*yourdomain.com"' -BrightBookingApiUrl '[API url]' -BrightBookingApiKey '[API key]' -BrightBookingIntegrationName '[name of integration as created in Admin center > Integrations]' -WhatIf
Traiter les utilisateurs dont le NUP se termine par 'yourdomain.com' et utiliser le champ 'PersonnelNumber' dans ActiveDirectory comme code postal pour les utilisateurs :
Push-ADUsersToBB -Filter 'UserPrincipalName -like "*yourdomain.com"' -ADUserPincodePropertyName PersonnelNumber -BrightBookingApiUrl '[API url]' -BrightBookingApiKey '[API key]' -BrightBookingIntegrationName '[name of integration as created in Admin center > Integrations]' -WhatIf
Traiter les utilisateurs qui sont membres d'un groupe spécifique dans une OU (Organizational Unit) :
Push-ADUsersToBB -Filter { memberOf -RecursiveMatch "CN=Administrators,DC=Company,DC=com" } -SearchBase "OU=Office,DC=Company,DC=com" -ADUserPincodePropertyName PersonnelNumber -BrightBookingApiUrl '[API url]' -BrightBookingApiKey '[API key]' -BrightBookingIntegrationName '[name of integration as created in Admin center > Integrations]' -WhatIf
Traiter les utilisateurs qui sont membres d'un groupe spécifique dans une OU (Organizational Unit) et définir un rôle spécifique en fonction de leur appartenance à un groupe :
$groupToRoleMapping = @()
$groupToRoleMapping += @ # match specific users that belong to a group
$groupToRoleMapping += @ # match specific users that belong to a group
$groupToRoleMapping += @ # match specific users that belong to a group to a role of View
$groupToRoleMapping += @ # **special case** this line matches for every user, because of the 'MatchType', and is needed when you want to have a generic role for every user
$roleNameDefaultIfNoGroupMatched = "Regular user"
Push-ADUsersToBB -Filter { memberOf -RecursiveMatch "CN=OfficeUsers,DC=Company,DC=com" } -SearchBase "OU=Office,DC=Company,DC=com" -ADUserPincodePropertyName PersonnelNumber -UserDefaultRoleName $roleNameDefaultIfNoGroupMatched -GroupUserRoleMapping $groupToRoleMapping -BrightBookingApiUrl '[API url]' -BrightBookingApiKey '[API key]' -BrightBookingIntegrationName '[name of integration as created in Admin center > Integrations]' -WhatIf
Traiter les utilisateurs qui sont membres d'un groupe spécifique dans une OU (Organizational Unit), avec [domain][username] comme nom d'utilisateur d'authentification :
Push-ADUsersToBB -Filter { memberOf -RecursiveMatch "CN=Administrators,DC=Company,DC=com" } -SearchBase "OU=Office,DC=Company,DC=com" -ADSpecificUsername DomainPlusUsername -BrightBookingApiUrl '[API url]' -BrightBookingApiKey '[API key]' -BrightBookingIntegrationName '[name of integration as created in Admin center > Integrations]' -WhatIf
Dans un exemple où vous travaillez avec deux locataires Active Directory différents, mais que vous devez les relier à un seul environnement GoBright , vous pouvez utiliser le script d'exemple suivant :
Soyez conscient que le script ci-dessous ne supporte pas l'instruction -WhatIf. Lorsque vous exécutez ce script, les utilisateurs seront poussés de votre Active Directory vers GoBright.
[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12
$ErrorActionPreference = "Stop"
$ADUsersProperties = @("SamAccountName","DistinguishedName","DisplayName","ProxyAddresses","Mail","MemberOf")
If ($ADUserPincodePropertyName)
{
$ADUsersProperties += $ADUserPincodePropertyName
$ConvertUsersParams.ADUserPincodePropertyName = $ADUserPincodePropertyName
}
If ($ADUserNamePropertyName)
{
$ADUsersProperties += $ADUserNamePropertyName
$ConvertUsersParams.ADUserNamePropertyName = $ADUserNamePropertyName
}
If ($ADUserMobilePropertyName)
{
$ADUsersProperties += $ADUserMobilePropertyName
$ConvertUsersParams.ADUserMobilePropertyName = $ADUserMobilePropertyName
}
If ($ADUserNFCIdPropertyName)
{
$ADUsersProperties += $ADUserNFCIdPropertyName
$ConvertUsersParams.ADUserNFCIdPropertyName = $ADUserNFCIdPropertyName
}
If ($ADUserDefaultCostCenterIdOrNamePropertyName)
{
$ADUsersProperties += $ADUserDefaultCostCenterIdOrNamePropertyName
$ConvertUsersParams.ADUserDefaultCostCenterIdOrNamePropertyName = $ADUserDefaultCostCenterIdOrNamePropertyName
}
$groupToRoleMapping = @()
$groupToRoleMapping += @
$groupToRoleMapping += @ # **special case** this line matches for every user, because of the 'MatchType', and is needed when you want to have a generic role for every user
#Get users from OU1 / or when adding -Server YourServername1.local from AD 1
$users1 = Get-ADUser -Filter 'UserPrincipalName -like "*yourdomain.com"' -SearchBase "OU=Office-Sales,DC=Company,DC=com" -Properties $ADUsersProperties | Select-Object *
-ADSpecificUsername DomainPlusUsername -BrightBookingApiKey '[API key]' -BrightBookingIntegrationName '[name of integration as created in Admin center > Integrations]'
#Get users from OU1 / or when adding -Server YourServername2.local from AD 2
$users2 = Get-ADUser -Filter 'UserPrincipalName -like "*yourdomain.com"' -SearchBase "OU=Office-Marketing,DC=Company,DC=com" -Properties $ADUsersProperties | Select-Object *
-ADSpecificUsername DomainPlusUsername -BrightBookingApiUrl '[API url]' -BrightBookingApiKey '[API key]' -BrightBookingIntegrationName '[name of integration as created in Admin center > Integrations]'
# merge the users to one list
$users_all = $users1 + $users2
# Filter so we only get user objects
$users_all = $users_all | Where-Object {$_.ObjectClass -eq "user"}
$convertedUsers = $users_all | Convert-ADUsersToBBUserExport -GroupUserRoleMapping $groupToRoleMapping -ADSpecificUsername UserPrincipalName -UserDefaultRoleName "Default User Role"
$convertedUsers
#Send users to GoBright
Send-ADUsersToBB -pipelineConvertedADUsers $convertedUsers -DeactivateExistingUsersInSameIntegrationThatAreNotLoaded -BrightBookingApiUrl '[API url]' -BrightBookingApiKey '[API key]' -BrightBookingIntegrationName '[name of integration as created in Admin center > Integrations]'
Étape 4.2 : Exécuter la synchronisation réelle
Une fois que la liste des utilisateurs est correctement filtrée, vous pouvez exécuter la synchronisation réelle en supprimant le paramètre '-WhatIf'.
Exécutez maintenant la même commande, mais sans '-WhatIf' et elle traitera les utilisateurs dans votre environnement GoBright .
Étape 4.3 : Planifiez l'intégration pour qu'elle s'exécute périodiquement via le planificateur de tâches de Windows.
Suivez ces étapes pour synchroniser les utilisateurs depuis Active Directory selon un calendrier :
- Prenez la commande que vous avez composée (voir les étapes précédentes), et enregistrez-la dans un fichier .ps1 :
- Créez un fichier .ps1 (par exemple UsersToBrightBooking.ps1) dans un dossier de votre choix.
- Ouvrez le fichier avec un éditeur, par exemple 'notepad'.
- Collez la commande complète dans le fichier
- Sauvegarder le fichier
- Exécutez le fichier pour voir s'il est réussi.
- Créez une tâche dans le planificateur de tâches de Windows :
- Ouvrir le planificateur de tâches de Windows
- Créer une tâche
- Définissez un calendrier, par exemple une fois par jour ou toutes les 4 heures.
- Ajouter une action "Démarrer un programme" :
- Programme/script :
Powershell.exe - Paramètres :
-windowstyle minimized -c "powershell -c .[Nom du fichier .ps1 créé] -verbose >> ExportToGoBright_Output.txt 2>&1″. - Start in :
Remplissez le champ 'start in' avec l'emplacement du script, par exemple :C:scripts
- Programme/script :
Intervalle de synchronisation pour les tests
Le conseil pour l'intervalle de synchronisation est une portée des montants ci-dessous :
- 0 à 2000 utilisateurs : la synchronisation peut être exécutée 4 fois par jour
- Plus de 2000 utilisateurs : la synchronisation peut être exécutée 2 fois par jour
Pour effectuer des tests environ 3-4 fois par heure, nous vous conseillons vivement d'exécuter le script avec de petits lots de 10 utilisateurs par exécution.