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’une instance spécifique d’un type de ressource au lieu de chaque instance de 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"
}
]
}
}
Notes
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"
]
}
Notes
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.
Notes
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 service Azure Bot Service.
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 surhttps://graph.microsoft.com/.default
.teamGroupId
: Vous pouvez obtenir l’ID du groupe d’équipe à partir du client Teams comme suit :- Dans le client Teams, sélectionnez Teams dans la barre de navigation située à l’extrême gauche.
- Sélectionnez l’équipe dans laquelle l’application est installée dans le menu déroulant.
- Sélectionnez l’icône Autres options (⋯).
- Sélectionnez Obtenir le lien vers l’équipe.
- 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 surhttps://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 :- Dans le client web Teams, sélectionnez conversation dans la barre de navigation située à l’extrême gauche.
- Sélectionnez la conversation dans laquelle l’application est installée dans le menu déroulant.
- Copiez l’URL web et enregistrez l’ID de thread de conversation à partir de la chaîne.
Utiliser Postman
- Ouvrez l’application Postman.
- Sélectionnez Fichier>Importer>Importer le fichier pour charger le fichier JSON mis à jour à partir de votre environnement.
- Sélectionnez l’onglet Collections.
- 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 d’état de réponse pour vérifier que le comportement des autorisations RSC dans votre application répond aux attentes.
Notes
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
- Désinstallez l’application de la ressource spécifique.
- Suivez les étapes pour la conversation ou l’équipe :
- 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.