Cloud Video Interop – Autorisations Azure Active Directory

Pour permettre à des utilisateurs de visio-conférences traditionnelles de se connecter à des conférences Microsoft Teams, Microsoft a travaillé avec des partenaires pour mettre en place une solution de passerelles Visio.

Cette solution de passerelle s’appelle CVI : Cloud Video Interop.

4 partenaires sont certifiés aujourd’hui sur ce sujet :

  • Poly, avec leur service Real Connect as a service for Office 365, et sa variante pour interconnecter les infrastructures de Visio Polycom : Real Connect as a service for Clarity for Teams.
  • Bluejeans avec leur service Bluejeans Gateway for Teams
  • Pexip avec 2 possibilités :
    • Pexip Service : service Cloud opéré par Pexip
    • Pexip Infinity : solution software qui peut être hébergée là où bon vous le semble (il est représenté dans cet article par le Service Klood)
  • Cisco avec son offre Webex video integration for Teams

Elle fonctionne d’une manière un peu spécifique et demande des autorisations particulières sur l’environnement Office 365 et surtout Azure Active Directory.

Le principe est le suivant :

Vos salles de visio-conférences traditionnelles vont se connecter à un des 4 fournisseurs de services en travers d’une adresse SIP ou H323.

Le fournisseur se connecte à un service de communication Azure : le Teams Interop Bot

Teams Interop Bot vous intègre dans la conférence Teams au sein de l’infrastructure Microsoft Teams.


Teams Interop Bot est un service commun à toutes les infrastructures Teams et Azure, mais pour pouvoir le mettre en service dans votre environnement Teams, il faut donner des autorisations au fournisseur CVI que vous avez choisi, pour qu’il puisse faire fonctionner ce service.

Ça passe par le « consent ».

Le « consent » c’est une demande d’autorisation, qui se traduit par une fenêtre de ce type, qui vous demande si en tant qu’administrateur général de votre environnement vous acceptez de donner des autorisations à une application externe qui souhaiterai fonctionner sur votre environnement.


L’explication non vulgarisée du consent chez Microsoft est là : https://docs.microsoft.com/en-us/azure/active-directory/develop/v2-permissions-and-consent

Grosso-modo, 2 types d’autorisations vont vous être demandées :

1. Delegate

il faut que l’utilisateur initie une action de l’application pour qu’elle utilise le droit accordé en utilisant le token de l’utilisateur.

Par exemple : Real connect Service lorsqu’il est invoqué par l’utilisateur, va accéder à l’Azure Active Directory avec les droit de l’utilisateur pour aller le lire, voir même, écrire dedans.

En complément, voici le lien vers la doc expliquant l’utilisation du token : https://docs.microsoft.com/en-us/graph/auth-v2-user?context=graph%2Fapi%2F1.0&view=graph-rest-1.0#3-get-a-token

2. Application

En mode application, celle-ci va pouvoir initier un certain nombre d’actions avec son propre compte invité.

Pour en savoir plus sur La notion d’application, voici la doc :  https://docs.microsoft.com/en-us/graph/auth-v2-service?view=graph-rest-1.0#4-get-an-access-token

Toutes les applications ne demandent pas les mêmes droits.

Pour les retrouver, il faut se connecter au portail azure : https://portal.azure.com

Ensuite vous allez dans Azure Active Directory


Dans Azure Active Directory, recherchez dans le navigateur de gauche les applications d’entreprise


Dans les applications d’entreprise, vous recherchez l’application du fournisseur que vous avez choisi :


Vous l’ouvrez


Et vous allez voir les Autorisations

Voici celles que j’ai relevé sur les différents fournisseurs

Bluejeans Gateway


Real Connect as a Service for Office 365



Une documentation détaillée des droits demandés est ici : https://rc-docs.plcm.vc/docs/permissions

Pexip services CVI


Trusted


Guest


Klood Gateway for Teams



Un petit explicatif de la plupart de ces permissions :

 

Join group calls and meetings as an app

Allows the app to join group calls and scheduled meetings in your organization, without a signed-in user. The app will be joined with the privileges of a directory user to meetings in your tenant.

 

Read online meeting details

Allows the app to read online meeting details in your organization, without a signed-in user.

 

Read and Create Online Meetings.

Allows an app to create, read online meetings without a signed-in user

 

Initiate outgoing group calls from the app

Allows the app to place outbound calls to multiple users and add participants to meetings in your organization, without a signed-in user.

 

Join group calls and meetings as a guest

Allows the app to anonymously join group calls and scheduled meetings in your organization, without a signed-in user. The app will be joined as a guest to meetings in your tenant.

 

Read all users’ full profiles

The User.Read.All application permission provides access to properties and permissions for operations listed at https://docs.microsoft.com/en-us/graph/api/resources/users?view=graph-rest-1.0, in particular the methods and properties listed at https://docs.microsoft.com/en-us/graph/api/resources/user?view=graph-rest-1.0 that require the User.Read.All permission.

It is used to:

Show the user’s UPN (user@domain) instead of GUID in logs for an administrator to know which user was in which call.

Allow point-to-point call capabilities.

Display the photo of a user if the user has not started their video.

 

Access media streams in a call as an app

Allows the app to get direct access to media streams in a call, without a signed-in user.

 

Initiate outgoing 1:1 calls from the app

Allows the app to place outbound calls to a single user and transfer calls to users in your organization’s directory, without a signed-in user.

reference : https://docs.microsoft.com/en-us/graph/permissions-reference#calls-permissions

un grand merci à Eric Scherlinger qui m’a accompagné dans la compréhension de ce sujet et à nos clients qui nous interpellent sans cesse et nous aide (voir nous forcent parfois 🙂 ) à progresser.

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *