Проверка разрешений согласия для конкретных ресурсов в Teams

Согласие для конкретных ресурсов (RSC) — это платформа авторизации, созданная Microsoft Teams и удостоверением Майкрософт, которая позволяет предоставлять доступ к приложению с ограниченной областью.

С помощью RSC авторизованный пользователь может предоставить приложению доступ к данным определенного экземпляра типа ресурса, а не к каждому экземпляру во всем клиенте. Например, человек, владеющий как командой A, так и командой B, может предоставить данные для приложения Contoso только команде A, а не команде B. Та же концепция доступа к данным с ограниченной областью применяется к чатам и собраниям. Дополнительные сведения см. в разделе Согласие для конкретных ресурсов (RSC).

Предварительные условия

Перед тестированием убедитесь, что вы проверили следующие изменения манифеста приложения для согласия конкретного ресурса:


Разрешения RSC для манифеста приложения версии 1.12 и более поздних

Добавьте в манифест приложения ключ webApplicationInfo со следующими значениями:

Имя Тип Описание
id String Идентификатор приложения Microsoft Entra. Дополнительные сведения см. в разделе Регистрация приложения в Центре администрирования Microsoft Entra.
resource String Это поле не используется в RSC, но должно быть добавлено и иметь значение, чтобы избежать ответа об ошибке; подойдет любая строка.

Укажите разрешения, необходимые приложению.

Имя Тип Описание
authorization Object Список разрешений, необходимых приложению для работы. Для получения дополнительных сведений см.Авторизация.

Пример RSC в команде

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

Пример RSC в чате

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

Примечание.

Если приложение предназначено для поддержки установки как для группы, так и для чата, то разрешения для группы и чата можно указать в одном манифесте в разделе authorization.


Разрешения RSC для манифеста приложения версии 1.11 и более ранних версий

Добавьте в манифест приложения ключ webApplicationInfo со следующими значениями:

Имя Тип Описание
id String Идентификатор приложения Microsoft Entra. Дополнительные сведения см. в разделе Регистрация приложения в Центре администрирования Microsoft Entra.
resource String Это поле не используется в RSC, но должно быть добавлено и иметь значение, чтобы избежать ответа об ошибке; подойдет любая строка.
applicationPermissions Массив строк Разрешения RSC для приложения. Дополнительные сведения см. в разделе Поддерживаемые разрешения RSC.

Пример RSC в команде

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

Пример RSC в чате

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

Примечание.

Если приложение предназначено для поддержки установки как для группы, так и для чата, то разрешения для группы и чата можно указать в одном манифесте в разделе applicationPermissions.

Важно!

В манифест приложения включите только разрешения RSC, которые должны быть у приложения.

Примечание.

Если приложение предназначено для доступа к API-интерфейсам вызовов или мультимедиа, то webApplicationInfo.Id должен быть Microsoft Entra идентификатором приложения Служба Bot Azure.

Протестируйте добавленные разрешения RSC для команды с помощью приложения Postman.

Чтобы проверить, соблюдаются ли разрешения RSC полезными данными запроса API, вам необходимо скопировать тестовый код RSC JSON для команды в локальную среду и обновить следующие значения:

  • azureADAppId: идентификатор Microsoft Entra приложения.

  • azureADAppSecret: пароль приложения Microsoft Entra.

  • token_scope: область необходима для получения токена.. Задайте для параметра значение https://graph.microsoft.com/.default.

  • teamGroupId: идентификатор группы команд можно получить из клиента Teams следующим образом:

    1. В клиенте Teams выберите Teams на крайней левой панели навигации.
    2. Из раскрывающегося меню выберите команду, в которой установлено приложение.
    3. Щелкните значок Дополнительные параметры (⋯).
    4. ВыберитеПолучить ссылку на команду.
    5. Скопируйте и сохраните значение groupId из строки.

Протестируйте добавленные разрешения RSC в чат с помощью приложения Postman.

Чтобы проверить, соблюдаются ли разрешения RSC полезными данными запроса API, вам необходимо скопироватьтестовый код RSC JSON для чатов в вашу локальную среду и обновить следующие значения:

  • azureADAppId: идентификатор Microsoft Entra приложения.

  • azureADAppSecret: пароль приложения Microsoft Entra.

  • token_scope: область необходима для получения токена.. Задайте для параметра значение https://graph.microsoft.com/.default.

  • tenantId: имя или идентификатор объекта Microsoft Entra клиента.

  • chatId: идентификатор потока чата можно получить из веб-клиента Teams следующим образом:

    1. В веб-клиенте Teams выберите Чат на крайней левой панели навигации.
    2. Из раскрывающегося меню выберите чат, в котором установлено приложение.
    3. Скопируйте веб-URL и сохраните идентификатор цепочки чата из строки. Идентификатор потока чата из URL-адреса веб-сайта.

Использование Postman

  1. Откройте приложение Postman.
  2. Выберите Файл>Импорт>Импортировать файл, чтобы загрузить обновленный файл JSON из вашей среды.
  3. Выберите вкладку Коллекции.
  4. Щелкните шеврон > рядом с Test RSC, чтобы развернуть представление сведений и просмотреть запросы API.

Выполните всю коллекцию разрешений для каждого вызова API. Разрешения, которые вы указали в своем манифесте приложения, должны успешно выполняться, а те, которые не указаны, должны завершаться ошибкой с кодом состояния HTTP 403. Проверьте все коды состояния ответа, чтобы убедиться, что поведение разрешений RSC в приложении соответствует ожиданиям.

Примечание.

Чтобы протестировать определенные вызовы API DELETE и READ, добавьте эти сценарии экземпляров в файл JSON.

Проверьте отозванные разрешения RSC с помощьюPostman

  1. Удаление приложения с определенного ресурса.
  2. Следуйте инструкциям для чата или команды:
    1. Протестируйте разрешения RSC, добавленные в команду с помощью Postman.
    2. Протестируйте разрешения RSC, добавленные в чат с помощью Postman.
  3. Проверьте все коды состояния ответа, чтобы убедиться, что определенные вызовы API завершились с ошибкой с кодом состояния HTTP 403.

Дополнительные ресурсы