Testen Sie ressourcenspezifische Einwilligungsberechtigungen in Teams

Die ressourcenspezifische Zustimmung (Resource-Specific Consent, RSC) ist ein von Microsoft Teams und Microsoft Identity erstelltes Autorisierungsframework, das das Gewähren von bereichsbezogenem Zugriff auf eine Anwendung ermöglicht.

Über RSC kann ein autorisierter Benutzer einer Anwendung Zugriff auf die Daten einer bestimmten instance eines Ressourcentyps statt auf jede instance im gesamten Mandanten gewähren. Beispielsweise kann eine Person, die sowohl Team A als auch Team B besitzt, die Daten für die Contoso-App nur an Team A und nicht an Team B übergeben. Das gleiche Konzept des bereichsbezogenen Datenzugriffs gilt für Chats und Besprechungen. Weitere Informationen finden Sie unter Ressourcenspezifische Zustimmung (RSC).

Voraussetzungen

Stellen Sie sicher, dass Sie vor dem Testen die folgenden App-Manifeständerungen auf ressourcenspezifische Zustimmung überprüfen:


RSC-Berechtigungen für App-Manifestversion 1.12 und höher

Fügen Sie Ihrem App-Manifest einen webApplicationInfoSchlüssel mit den folgenden Werten hinzu:

Name Typ Beschreibung
id Zeichenfolge Ihre Microsoft Entra-App-ID. Weitere Informationen finden Sie unter Registrieren Ihrer App im Microsoft Entra Admin Center.
resource Zeichenfolge Dieses Feld hat in RSC keine Operation, muss aber hinzugefügt werden und einen Wert haben, um eine Fehlerantwort zu vermeiden; jede Zeichenfolge wird tun.

Geben Sie die von der App benötigten Berechtigungen an.

Name Typ Beschreibung
authorization Object Liste der Berechtigungen, welche die App benötigt, um zu funktionieren. Weitere Informationen finden Sie unter Autorisierung.

Beispiel für RSC in einem Team

"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"
            }
        ]    
    }
}

Beispiel für RSC in einem Chat

"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"
            }
        ]    
    }
}

Hinweis

Wenn die App die Installation sowohl im Team- als auch im Chatbereich unterstützen soll, können sowohl Team- als auch Chatberechtigungen im selben Manifest unter angegeben werden authorization.


RSC-Berechtigungen für App-Manifestversion 1.11 und früher

Fügen Sie Ihrem App-Manifest einen webApplicationInfoSchlüssel mit den folgenden Werten hinzu:

Name Typ Beschreibung
id Zeichenfolge Ihre Microsoft Entra-App-ID. Weitere Informationen finden Sie unter Registrieren Ihrer App im Microsoft Entra Admin Center.
resource Zeichenfolge Dieses Feld hat in RSC keine Operation, muss aber hinzugefügt werden und einen Wert haben, um eine Fehlerantwort zu vermeiden; jede Zeichenfolge wird tun.
applicationPermissions Array aus Zeichenfolgen RSC-Berechtigungen für Ihre App. Weitere Informationen finden Sie unter Unterstützte RSC-Berechtigungen.

Beispiel für RSC in einem Team

"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"
    ]
  }

Beispiel für RSC in einem Chat

"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"
    ]
  }

Hinweis

Wenn die App die Installation sowohl im Team- als auch im Chatbereich unterstützen soll, können sowohl Team- als auch Chatberechtigungen im selben Manifest unter angegeben werden applicationPermissions.

Wichtig

Fügen Sie in Ihrem App-Manifest nur die RSC-Berechtigungen ein, die Ihre App haben soll.

Hinweis

Wenn die App auf Aufruf- oder Medien-APIs zugreifen soll, sollte die webApplicationInfo.Id Microsoft Entra App-ID eines Azure-Bot Service sein.

Testen Sie einem Team hinzugefügte RSC-Berechtigungen mit der Postman-App

Um zu überprüfen, ob die RSC-Berechtigungen von der Nutzlast der API-Anforderung berücksichtigt werden, müssen Sie den RSC-JSON-Testcode für team in Ihre lokale Umgebung kopieren und die folgenden Werte aktualisieren:

  • azureADAppId: Die Microsoft Entra App-ID Ihrer App.

  • azureADAppSecret: Ihr Microsoft Entra-App-Kennwort.

  • token_scope: Der Bereich ist erforderlich, um ein Token zu erhalten. Legen Sie den Wert auf fest https://graph.microsoft.com/.default.

  • teamGroupId: Sie können die Teamgruppen-ID wie folgt vom Teams-Client abrufen:

    1. Wählen Sie im Teams-Client in der Navigationsleiste ganz links Teams aus.
    2. Wählen Sie das Team, in dem die App installiert ist, aus dem Dropdown-Menü aus.
    3. Wählen Sie das Symbol Weitere Optionen (⋯) aus.
    4. Wählen Sie Link zum Team abrufen aus.
    5. Kopieren und speichern Sie den groupId Wert aus der Zeichenfolge.

Testen Sie hinzugefügte RSC-Berechtigungen für einen Chat mit der Postman-App

Um zu überprüfen, ob die RSC-Berechtigungen von der Nutzlast der API-Anforderung berücksichtigt werden, müssen Sie den RSC-JSON-Testcode für Chats in Ihre lokale Umgebung kopieren und die folgenden Werte aktualisieren:

  • azureADAppId: Die Microsoft Entra App-ID Ihrer App.

  • azureADAppSecret: Ihr Microsoft Entra-App-Kennwort.

  • token_scope: Der Bereich ist erforderlich, um ein Token zu erhalten. Legen Sie den Wert auf fest https://graph.microsoft.com/.default.

  • tenantId: Der Name oder die Microsoft Entra Objekt-ID Ihres Mandanten.

  • chatId: Sie können die Chatthread-ID wie folgt vom Teams-Webclient abrufen:

    1. Wählen Sie im Teams-Webclient in der Navigationsleiste ganz links Chat aus.
    2. Wählen Sie aus dem Dropdown-Menü den Chat aus, in dem die App installiert ist.
    3. Kopieren Sie die Web-URL und speichern Sie die Chat-Thread-ID aus der Zeichenfolge. Chatthread-ID von Web-URL.

Verwenden von Postman

  1. Öffnen Sie die Postman App.
  2. Wählen Sie Datei>importieren>Datei importieren aus, um die aktualisierte JSON-Datei aus Ihrer Umgebung hochzuladen.
  3. Wählen Sie die Registerkarte Sammlungen aus.
  4. Wählen Sie das Chevron > neben dem Test-RSC aus, um die Detailansicht zu erweitern und die API-Anforderungen anzuzeigen.

Führen Sie die gesamte Berechtigungssammlung für jeden API-Aufruf aus. Die Berechtigungen, die Sie in Ihrem App-Manifest angegeben haben, müssen erfolgreich sein, während die nicht angegebenen Berechtigungen mit einem HTTP 403-Statuscode fehlschlagen müssen. Überprüfen Sie alle Antworten status Codes, um zu bestätigen, dass das Verhalten der RSC-Berechtigungen in Ihrer App die Erwartungen erfüllt.

Hinweis

Um bestimmte DELETE- und READ-API-Aufrufe zu testen, fügen Sie diese Instanzszenarien zur JSON-Datei hinzu.

Testen Sie widerrufene RSC-Berechtigungen mit Postman

  1. Deinstallieren Sie die App von der spezifischen Ressource.
  2. Befolgen Sie die Schritte für Chat oder Team:
    1. Testen Sie einem Team hinzugefügte RSC-Berechtigungen mit Postman.
    2. Testen Sie hinzugefügte RSC-Berechtigungen zu einem Chat mit Postman.
  3. Überprüfen Sie alle Antwortstatuscodes, um zu bestätigen, dass die spezifischen API-Aufrufe mit dem HTTP-Statuscode 403 fehlgeschlagen sind.

Siehe auch