Paramétrage RoomBooking : authentification intégrée Office 365 (Microsoft Graph)

Sommaire

Procédure pour l’administrateur Microsoft 365 · environ 30 minutes, puis jusqu’à 2 heures d’application des droits par Microsoft.

Objectif

TVTools RoomBooking lit et met à jour les calendriers de vos salles de réunion par Microsoft Graph, l’interface de Microsoft qui remplace Exchange Web Services (EWS). L’accès est accordé à une application, sans compte de service ni licence, et il est limité aux seules salles d’un groupe que vous gérez.

À savoir : Microsoft arrête EWS dans Exchange Online : désactivation progressive depuis le 1er octobre 2026, arrêt définitif le 1er avril 2027. Cette procédure n’utilise pas EWS.

Scripts guidés : toutes les étapes ci-dessous peuvent aussi être réalisées avec les scripts du dossier « TVTools RoomBooking – Microsoft Graph », à télécharger ici : CLIQUEZ ICI.

Décompressez-le, remplissez config.psd1 avec le Bloc-notes, puis double-cliquez sur les fichiers .bat dans l’ordre. Chaque commande est affichée avant d’être exécutée, et une simulation sans modification est disponible.

Prérequis

  • un compte administrateur général (Global Administrator) de votre organisation Microsoft 365 ;
  • PowerShell avec les modules Microsoft.Graph et ExchangeOnlineManagement ;
  • les adresses e-mail des salles à afficher sur les écrans TVTools ;
  • prévoir jusqu’à 2 heures entre l’attribution des droits (étape 5) et leur prise en compte.

Point important : utilisez un groupe Microsoft 365, pas un groupe de sécurité. Seuls les membres directs du groupe sont pris en compte (pas les membres de groupes imbriqués).

Script guidé : 1 – Preparer (configuration et modules).bat

Installation des modules (une seule fois), puis connexion avec le compte administrateur :

Install-Module Microsoft.Graph -Scope CurrentUser

Install-Module ExchangeOnlineManagement -Scope CurrentUser

Connect-MgGraph -Scopes « Application.Read.All »

Connect-ExchangeOnline

Gardez cette fenêtre PowerShell ouverte jusqu’à l’étape 6 : les variables créées à l’étape 3 servent aux étapes suivantes.

Si une connexion échoue avec « Could not load file or assembly » ou « Method not found » : les deux modules entrent en conflit dans cette fenêtre. Ouvrez une fenêtre PowerShell pour les commandes Microsoft Graph (Get-MgServicePrincipal) et une autre pour Exchange Online, en y reportant les valeurs de $AppId et $ServicePrincipalId affichées à l’étape 3. Les scripts guidés font cette séparation automatiquement.

1. Création du groupe « TVTools Group »

Script guidé : 2 – Etape 1 – Groupe des salles.bat

Dans le Centre d’administration Microsoft 365 (Équipes et groupes > Groupes actifs > Ajouter un groupe), créez un groupe Microsoft 365 nommé « TVTools Group » et ajoutez-y comme membres toutes les salles à afficher sur les écrans TVTools.

Par la suite, ajouter ou retirer une salle se fera simplement en modifiant les membres de ce groupe.

2. Création de l’application « TVTools Calendars » (Microsoft Entra)

Script guidé : 3 – Etape 2 – Application Entra.bat (crée aussi le secret et affiche les informations pour TVTools)

  1. Inscription : portail Microsoft Entra (entra.microsoft.com) > Applications > Inscriptions d’applications > Nouvelle inscription. Nom : « TVTools Calendars » ; types de comptes : « Comptes dans cet annuaire organisationnel uniquement » ; pas d’URI de redirection ; cliquez sur Inscrire.
  2. Identifiants : sur la page Vue d’ensemble, notez l’ID d’application (client) et l’ID de l’annuaire (locataire).
  3. Secret : Certificats et secrets > Nouveau secret client, durée 24 mois. Copiez immédiatement la Valeur (et non l’ID du secret) : elle ne sera plus affichée. Notez aussi la date d’expiration.
  4. Autorisation : Autorisations d’API > Ajouter une autorisation > Microsoft Graph > Autorisations d’application > User.Read.All > Ajouter des autorisations, puis cliquez sur « Accorder un consentement d’administrateur ».

Important : n’ajoutez aucune autre autorisation d’API, ni Calendars.*, ni full_access_as_app. Ces permissions s’appliqueraient à toutes les boîtes de l’organisation. L’accès aux calendriers est accordé à l’étape 5, limité aux salles du groupe.

3. Déclaration de l’application dans Exchange Online

Script guidé : 4 – Etapes 3 a 5 – Droits Exchange.bat (étapes 3, 4 et 5 en une fois)

Exchange Online doit connaître l’application pour pouvoir lui attribuer un rôle :

$SP = Get-MgServicePrincipal -Filter « displayName eq ‘TVTools Calendars' »

$AppId = $SP.AppId

$ServicePrincipalId = $SP.Id

Write-Host (« AppId : {0} – Id du service principal : {1} » -f $AppId, $ServicePrincipalId)

New-ServicePrincipal -AppId $AppId -ObjectId $ServicePrincipalId -DisplayName ‘PS RBAC TVTools Calendars’

Vérification :

Get-ServicePrincipal | ? AppId -EQ $AppId | fl

Si $AppId est vide, recherchez l’application par le début de son nom, puis reprenez les commandes ci-dessus avec la bonne valeur :

$SP = Get-MgServicePrincipal -ConsistencyLevel eventual -Count spCount -Filter « startsWith(DisplayName, ‘TVTools Calendars’) »

$SP

4. Création de l’étendue « TVTools Scope »

L’étendue limite les droits de l’application aux membres du groupe « TVTools Group » :

$scopedGroup = Get-Group ‘TVTools Group’

New-ManagementScope « TVTools Scope » -RecipientRestrictionFilter « MemberOfGroup -eq ‘$($scopedGroup.DistinguishedName)' »

Vérification :

Get-ManagementScope « TVTools Scope » | fl

5. Attribution du rôle Microsoft Graph

Attribuez à l’application le rôle d’accès aux calendriers, limité à l’étendue « TVTools Scope » :

New-ManagementRoleAssignment -App $AppId -CustomResourceScope ‘TVTools Scope’ -Role ‘Application Calendars.ReadWrite’

Vérification :

Get-ManagementRoleAssignment -Role ‘Application Calendars.ReadWrite’ | fl

La commande doit afficher une attribution pour l’application « TVTools Calendars », avec l’étendue « TVTools Scope ».

Délai : le rôle met de 30 minutes à 2 heures à s’appliquer. Attendez ce délai avant l’étape 7.

6. Test de fonctionnement

Script guidé : 5 – Etape 6 – Test des droits.bat

Vérifiez que l’application a bien le rôle sur une salle membre du groupe (exemple : delta@tvtools.info) :

Test-ServicePrincipalAuthorization -Identity $AppId -Resource delta@tvtools.info | Format-Table RoleName, InScope

Résultat attendu :

RoleName                          InScope

——–                          ——-

Application Calendars.ReadWrite      True

Sur une boîte qui n’est pas membre du groupe (exemple : omega@tvtools.info), InScope doit être à False :

Test-ServicePrincipalAuthorization -Identity $AppId -Resource omega@tvtools.info | Format-Table RoleName, InScope

Ce test vérifie la configuration immédiatement, sans attendre le délai de l’étape 5. Si une salle du groupe affiche False, vérifiez qu’elle est membre direct du groupe « TVTools Group ».

7. Vérification de la récupération des événements

Script guidé : 6 – Etape 7 – Test du calendrier.bat

Ce test lit le calendrier d’une salle avec les identifiants de l’application, comme le fera TVTools. Lancez-le une fois le délai de l’étape 5 écoulé, dans une nouvelle fenêtre PowerShell : la connexion se fait ici au nom de l’application, et non plus du compte administrateur.

$appId = « xxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxx »

$clientSecret = « valeur du secret »

$tenantId = « tenant de votre organisation »

$clientSecretCredential = New-Object -TypeName System.Management.Automation.PSCredential -ArgumentList $appId, (ConvertTo-SecureString -String $clientSecret -AsPlainText -Force)

Connect-MgGraph -ClientSecretCredential $clientSecretCredential -TenantId $tenantId

$user = Get-MgUser -Filter « mail eq ‘delta@tvtools.info' »

$events = Get-MgUserEvent -UserId $user.Id -Top 5

$events | Select-Object Subject, @{n=’Debut’;e={$_.Start.DateTime}}, @{n=’Fin’;e={$_.End.DateTime}}

Disconnect-MgGraph

Résultat attendu : des réunions de la salle s’affichent (aucune ligne si son calendrier est vide). La commande Get-MgUser utilise l’autorisation User.Read.All de l’étape 2.

En cas d’erreur « Access is denied » (403, ErrorAccessDenied) : le rôle de l’étape 5 n’est pas encore appliqué (attendez jusqu’à 2 heures), ou la salle n’est pas membre du groupe « TVTools Group ».

Informations à transmettre à TVTools

  • l’ID d’application (client) ;
  • la valeur du secret client et sa date d’expiration, par un canal sûr (téléphone, lien de partage protégé), pas en clair dans un e-mail ;
  • l’ID de l’annuaire (tenant) ;
  • la liste des salles (adresses e-mail) membres du groupe « TVTools Group ».

Gestion courante

  • Ajouter ou retirer une salle : modifiez les membres du groupe « TVTools Group » (prise en compte en 30 minutes à 2 heures).
  • Avant l’expiration du secret : créez un nouveau secret (Certificats et secrets) et transmettez-le à TVTools ; supprimez l’ancien une fois que TVTools vous a confirmé le passage au nouveau.
  • Retirer l’accès à TVTools : supprimez l’attribution de rôle de l’étape 5, ou l’application elle-même dans Microsoft Entra.

Vous utilisiez déjà TVTools avec EWS ?

Si votre organisation a déjà suivi la procédure EWS (groupe « TVTools Group », étendue « TVTools Scope » et rôle Application EWS.AccessAsApp), seules les étapes 5 à 7 sont à faire : l’application, le groupe et l’étendue existants sont réutilisés.

Une fois que TVTools vous a confirmé que vos écrans fonctionnent avec Microsoft Graph, l’ancien rôle EWS peut être retiré :

Get-ManagementRoleAssignment -Role ‘Application EWS.AccessAsApp’ | fl Name, RoleAssignee, CustomResourceScope

Remove-ManagementRoleAssignment -Identity « <nom de l’attribution EWS affiché par la commande précédente> »

Ne supprimez ni le groupe « TVTools Group », ni l’étendue « TVTools Scope » : le rôle Microsoft Graph les utilise.

Avantages de cette solution

  • plus de compte de service ni de licence associée ;
  • gestion simple : il suffit d’ajouter les salles au groupe ;
  • sécurité : l’application n’accède qu’aux calendriers des salles du groupe, ni aux e-mails ni aux contacts.

Support

Pour toute difficulté, contactez le support TVTools

https://support.tvtools.eu

Nos dernières publications

Contacter le support

Cette réponse ne suffit pas pour résoudre votre situation ? Contactez notre service de support, un collaborateur technique vous répondra dès que possible.

Déposer une question

En cas d’absence de réponse à votre question, n’hésitez pas à la poser ici, et nous nous engageons à vous fournir une réponse dans les plus brefs délais.

Pour suivre notre actualité et recevoir nos meilleurs conseils de communication digitale, rejoignez nous sur notre page LinkedIn !