Проверка разрешений согласия для конкретных ресурсов в 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 службы Azure Bot.
Протестируйте добавленные разрешения RSC для команды с помощью приложения Postman.
Чтобы проверить, соблюдаются ли разрешения RSC полезными данными запроса API, вам необходимо скопировать тестовый код RSC JSON для команды в локальную среду и обновить следующие значения:
azureADAppId
: идентификатор приложения Microsoft Entra вашего приложения.azureADAppSecret
: пароль приложения Microsoft Entra.token_scope
: область необходима для получения токена.. Задайте для параметра значениеhttps://graph.microsoft.com/.default
.teamGroupId
: идентификатор группы команд можно получить из клиента Teams следующим образом:- В клиенте Teams выберите Teams на крайней левой панели навигации.
- Из раскрывающегося меню выберите команду, в которой установлено приложение.
- Щелкните значок Дополнительные параметры (⋯).
- ВыберитеПолучить ссылку на команду.
- Скопируйте и сохраните значение 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 следующим образом:- В веб-клиенте Teams выберите Чат на крайней левой панели навигации.
- Из раскрывающегося меню выберите чат, в котором установлено приложение.
- Скопируйте веб-URL и сохраните идентификатор цепочки чата из строки.
Использование Postman
- Откройте приложение Postman.
- Выберите Файл>Импорт>Импортировать файл, чтобы загрузить обновленный файл JSON из вашей среды.
- Выберите вкладку Коллекции.
- Щелкните шеврон > рядом с Test RSC, чтобы развернуть представление сведений и просмотреть запросы API.
Выполните всю коллекцию разрешений для каждого вызова API. Разрешения, которые вы указали в своем манифесте приложения, должны успешно выполняться, а те, которые не указаны, должны завершаться ошибкой с кодом состояния HTTP 403. Проверьте все коды состояния ответа, чтобы убедиться, что поведение разрешений RSC в приложении соответствует ожиданиям.
Примечание.
Чтобы протестировать определенные вызовы API DELETE и READ, добавьте эти сценарии экземпляров в файл JSON.
Проверьте отозванные разрешения RSC с помощьюPostman
- Удаление приложения с определенного ресурса.
- Следуйте инструкциям для чата или команды:
- Проверьте все коды состояния ответа, чтобы убедиться, что определенные вызовы API завершились с ошибкой с кодом состояния HTTP 403.
Дополнительные ресурсы
Platform Docs