Tester les autorisations de consentement spécifiques aux ressources dans Teams

Le consentement spécifique à la ressource (RSC) est une infrastructure d’autorisation créée par Microsoft Teams et l’identité Microsoft qui permet d’accorder un accès étendu à une application.

Par le biais de RSC, un utilisateur autorisé peut accorder à une application l’accès aux données d’un instance spécifique d’un type de ressource au lieu de chaque instance dans l’ensemble du locataire. Par exemple, une personne propriétaire de l’équipe A et de l’équipe B peut décider de donner les données de l’application Contoso uniquement à l’équipe A et non à l’équipe B. Le même concept d’accès aux données délimité s’applique aux conversations et aux réunions. Pour plus d’informations, consultez Consentement spécifique à la ressource (RSC).

Configuration requise

Vérifiez que vous vérifiez les modifications de manifeste d’application suivantes pour le consentement spécifique à la ressource avant de tester :


Autorisations RSC pour le manifeste d’application version 1.12 et ultérieure

Ajoutez une clé webApplicationInfo au manifeste de votre application avec les valeurs suivantes :

Nom Type Description
id Chaîne VOTRE ID d’application Microsoft Entra. Pour plus d’informations, consultez Inscrire votre application dans le centre d’administration Microsoft Entra.
resource Chaîne Ce champ n’a aucune opération dans RSC, mais doit être ajouté et avoir une valeur pour éviter une réponse d’erreur ; n’importe quelle chaîne le fera.

Spécifiez les autorisations nécessaires à l’application.

Nom Type Description
authorization Objet Liste des autorisations dont l’application a besoin pour fonctionner. Pour plus d’informations, consultez d’autorisation.

Exemple pour RSC dans une équipe

"webApplicationInfo": {
    "id": "XXxxXXXXX-XxXX-xXXX-XXxx-XXXXXXXxxxXX",
    "resource": "https://RscBasedStoreApp"
    },
"authorization": {
    "permissions": {
        "resourceSpecific": [
            {
                "name": "TeamSettings.Read.Group",
                "type": "Application"
            },
            {
                "name": "TeamSettings.ReadWrite.Group",
                "type": "Application"
            },
            {
                "name": "ChannelSettings.Read.Group",
                "type": "Application"
            },
            {
                "name": "ChannelSettings.ReadWrite.Group",
                "type": "Application"
            },
            {
                "name": "Channel.Create.Group",
                "type": "Application"
            },
            {
                "name": "Channel.Delete.Group",
                "type": "Application"
            },
            {
                "name": "ChannelMessage.Read.Group",
                "type": "Application"
            },
            {
                "name": "ChannelMeeting.ReadBasic.Group",
                "type": "Application"
            },
            {
                "name": "TeamsAppInstallation.Read.Group",
                "type": "Application"
            },
            {
                "name": "TeamsTab.Read.Group",
                "type": "Application"
            },
            {
                "name": "TeamsTab.Create.Group",
                "type": "Application"
            },
            {
                "name": "TeamsTab.ReadWrite.Group",
                "type": "Application"
            },
            {
                "name": "TeamsTab.Delete.Group",
                "type": "Application"
            },
            {
                "name": "TeamMember.Read.Group",
                "type": "Application"
            },
            {
                "name": "TeamsActivity.Send.Group",
                "type": "Application"
            }
        ]    
    }
}

Exemple pour RSC dans une conversation

"webApplicationInfo": {
    "id": "XXxxXXXXX-XxXX-xXXX-XXxx-XXXXXXXxxxXX",
    "resource": "https://RscBasedStoreApp"
    },
"authorization": {
    "permissions": {
        "resourceSpecific": [
            {
                "name": "ChatSettings.Read.Chat",
                "type": "Application"
            },
            {
                "name": "ChatSettings.ReadWrite.Chat",
                "type": "Application"
            },
            {
                "name": "ChatMessage.Read.Chat",
                "type": "Application"
            },
            {
                "name": "ChatMember.Read.Chat",
                "type": "Application"
            },
            {
                "name": "Chat.Manage.Chat",
                "type": "Application"
            },
            {
                "name": "TeamsTab.Read.Chat",
                "type": "Application"
            },
            {
                "name": "TeamsTab.Create.Chat",
                "type": "Application"
            },
            {
                "name": "TeamsTab.Delete.Chat",
                "type": "Application"
            },
            {
                "name": "TeamsTab.ReadWrite.Chat",
                "type": "Application"
            },
            {
                "name": "TeamsAppInstallation.Read.Chat",
                "type": "Application"
            },
            {
                "name": "OnlineMeeting.ReadBasic.Chat",
                "type": "Application"
            },
            {
                "name": "Calls.AccessMedia.Chat",
                "type": "Application"
            },
            {
                "name": "Calls.JoinGroupCalls.Chat",
                "type": "Application"
            },
            {
                "name": "TeamsActivity.Send.Chat",
                "type": "Application"
            }
        ]    
    }
}

Remarque

Si l’application est destinée à prendre en charge l’installation dans les étendues d’équipe et de conversation, les autorisations d’équipe et de conversation peuvent être spécifiées dans le même manifeste sous authorization.


Autorisations RSC pour le manifeste d’application version 1.11 et antérieure

Ajoutez une clé webApplicationInfo au manifeste de votre application avec les valeurs suivantes :

Nom Type Description
id Chaîne VOTRE ID d’application Microsoft Entra. Pour plus d’informations, consultez Inscrire votre application dans le centre d’administration Microsoft Entra.
resource Chaîne Ce champ n’a aucune opération dans RSC, mais doit être ajouté et avoir une valeur pour éviter une réponse d’erreur ; n’importe quelle chaîne le fera.
applicationPermissions Tableau de chaînes Autorisations RSC pour votre application. Pour plus d’informations, consultez Autorisations RSC prises en charge.

Exemple pour RSC dans une équipe

"webApplicationInfo": {
    "id": "XXxxXXXXX-XxXX-xXXX-XXxx-XXXXXXXxxxXX",
    "resource": "https://RscBasedStoreApp",
    "applicationPermissions": [
        "TeamSettings.Read.Group",
        "TeamSettings.ReadWrite.Group",
        "ChannelSettings.Read.Group",
        "ChannelSettings.ReadWrite.Group",
        "Channel.Create.Group",
        "Channel.Delete.Group",
        "ChannelMessage.Read.Group",
        "ChannelMeeting.ReadBasic.Group",
        "TeamsAppInstallation.Read.Group",
        "TeamsTab.Read.Group",
        "TeamsTab.Create.Group",
        "TeamsTab.ReadWrite.Group",
        "TeamsTab.Delete.Group",
        "TeamMember.Read.Group",
        "TeamsActivity.Send.Group"
    ]
  }

Exemple pour RSC dans une conversation

"webApplicationInfo": {
    "id": "XXxxXXXXX-XxXX-xXXX-XXxx-XXXXXXXxxxXX",
    "resource": "https://RscBasedStoreApp",
    "applicationPermissions": [
        "ChatSettings.Read.Chat",
        "ChatSettings.ReadWrite.Chat",
        "ChatMessage.Read.Chat",
        "ChatMember.Read.Chat",
        "Chat.Manage.Chat",
        "TeamsTab.Read.Chat",
        "TeamsTab.Create.Chat",
        "TeamsTab.Delete.Chat",
        "TeamsTab.ReadWrite.Chat",
        "TeamsAppInstallation.Read.Chat",
        "OnlineMeeting.ReadBasic.Chat",
        "Calls.AccessMedia.Chat",
        "Calls.JoinGroupCalls.Chat",
        "TeamsActivity.Send.Chat"
    ]
  }

Remarque

Si l’application est destinée à prendre en charge l’installation dans les étendues d’équipe et de conversation, les autorisations d’équipe et de conversation peuvent être spécifiées dans le même manifeste sous applicationPermissions.

Importante

Dans le manifeste de votre application, incluez uniquement les autorisations RSC que vous souhaitez que votre application ait.

Remarque

Si l’application est destinée à accéder aux API d’appel ou de média, le webApplicationInfo.Id doit être l’ID d’application Microsoft Entra d’un Bot Service Azure.

Tester les autorisations RSC ajoutées à une équipe à l’aide de l’application Postman

Pour vérifier si les autorisations RSC sont respectées par la charge utile de la demande d’API, vous devez copier le code de test JSON RSC pour les d’équipe dans votre environnement local et mettre à jour les valeurs suivantes :

  • azureADAppId: ID d’application Microsoft Entra de votre application.

  • azureADAppSecret: mot de passe de votre application Microsoft Entra.

  • token_scope: l’étendue est requise pour obtenir un jeton. Définissez la valeur sur https://graph.microsoft.com/.default.

  • teamGroupId: Vous pouvez obtenir l’ID du groupe d’équipe à partir du client Teams comme suit :

    1. Dans le client Teams, sélectionnez Teams dans la barre de navigation située à l’extrême gauche.
    2. Sélectionnez l’équipe dans laquelle l’application est installée dans le menu déroulant.
    3. Sélectionnez l’icône Autres options (⋯).
    4. Sélectionnez Obtenir le lien vers l’équipe.
    5. Copiez et enregistrez la valeur groupId à partir de la chaîne.

Tester les autorisations RSC ajoutées à une conversation à l’aide de l’application Postman

Pour vérifier si les autorisations RSC sont respectées par la charge utile de la demande d’API, vous devez copier le code de test JSON RSC pour les conversations dans votre environnement local et mettre à jour les valeurs suivantes :

  • azureADAppId: ID d’application Microsoft Entra de votre application.

  • azureADAppSecret: mot de passe de votre application Microsoft Entra.

  • token_scope: l’étendue est requise pour obtenir un jeton. Définissez la valeur sur https://graph.microsoft.com/.default.

  • tenantId: nom ou id d’objet Microsoft Entra de votre locataire.

  • chatId: vous pouvez obtenir l’ID de thread de conversation à partir du client web Teams comme suit :

    1. Dans le client web Teams, sélectionnez conversation dans la barre de navigation située à l’extrême gauche.
    2. Sélectionnez la conversation dans laquelle l’application est installée dans le menu déroulant.
    3. Copiez l’URL web et enregistrez l’ID de thread de conversation à partir de la chaîne. ID de thread de conversation à partir de l’URL web.

Utiliser Postman

  1. Ouvrez l’application Postman.
  2. Sélectionnez Fichier>Importer>Importer le fichier pour charger le fichier JSON mis à jour à partir de votre environnement.
  3. Sélectionnez l’onglet Collections.
  4. Sélectionnez le chevron> à côté de Test RSC pour développer la vue détaillée et voir les demandes API.

Exécutez l’intégralité de la collection d’autorisations pour chaque appel d’API. Les autorisations que vous avez spécifiées dans le manifeste de votre application doivent réussir, tandis que celles qui ne sont pas spécifiées doivent échouer avec un code d’état HTTP 403. Vérifiez tous les codes de status de réponse pour vérifier que le comportement des autorisations RSC dans votre application répond aux attentes.

Remarque

Pour tester des appels d’API DELETE et READ spécifiques, ajoutez ces scénarios d’instance au fichier JSON.

Tester les autorisations RSC révoquées à l’aide de Postman

  1. Désinstallez l’application de la ressource spécifique.
  2. Suivez les étapes pour la conversation ou l’équipe :
    1. Test a ajouté des autorisations RSC à une équipe à l’aide de Postman.
    2. Test a ajouté des autorisations RSC à une conversation à l’aide de Postman.
  3. Vérifiez tous les codes d’état de réponse pour vérifier que les appels d’API spécifiques ont échoué avec un code d’état HTTP 403.

Voir aussi