#azure-active-directory #microsoft-graph-api
#azure-активный каталог #microsoft-graph-api
Вопрос:
У меня есть гостевой пользователь в Azure Active Directory (полностью активирован — приглашение принято и т. Д.), Которого я пытаюсь добавить в команду (в Microsoft Teams) Через Graph API.
Следуя документации, я установил все необходимые разрешения для своего приложения, однако я получаю ответ 403 на свой запрос POST.
{
"error": {
"code": "Forbidden",
"message": "An unknown error has occurred.",
"innerError": {
"date": "2020-12-09T15:52:30",
"request-id": "X-X-X-X-X",
"client-request-id": "XXX-XXX-XX-XXX-XXX"
}
}
}
Ниже приведен мой декодированный токен аутентификации MS, подтверждающий необходимые разрешения, которые должны позволить моему вызову добавить члена команды (приложение выполняет и несколько других действий, отсюда и дополнительные завивки):
{
...
"roles" : [ "Teamwork.Migrate.All", "TeamMember.ReadWriteNonOwnerRole.All", "User.ReadWrite.All", "Directory.ReadWrite.All", "TeamMember.ReadWrite.All", "ChannelMember.ReadWrite.All", "GroupMember.ReadWrite.All", "Channel.Create" ],
...
}
Как ни странно, если я использую модуль PowerShell (microsoft teams), он успешно добавляет этого пользователя в нужную команду. Я понимаю, что этот модуль использует Graph API, поэтому я не уверен, почему не работает прямое сообщение (пытался найти исходный код модулей, чтобы узнать, какой запрос они используют, но не повезло).
Чтобы найти решение этой проблемы, я просто использую Postman, поэтому у меня нет никакого кода, которым я мог бы поделиться. Я также могу добавлять участников канала (гостей), создавать каналы и т.д. Через API, но эта проблема 403 возникает только при попытке добавить гостя в команду.
Мой ПОСТ:
СООБЩЕНИЕ https://graph.microsoft.com/v1.0/teams /{ИДЕНТИФИКАТОР КОМАНДЫ}/участники
ЗАГОЛОВОК
{
"Content-Type": "application/json",
"Authorization": "Bearer {TOKEN}"
}
Тело
{
"@odata.type": "#microsoft.graph.aadUserConversationMember",
"roles": ["member"],
"user@odata.bind": "https://graph.microsoft.com/v1.0/users('{GUEST_MEMBER_ID}')"
}
Я пробовал как версии 1.0, так и бета-версии конечных точек. Оба дают одни и те же 403.
Я рад предоставить любую дополнительную информацию, которая может потребоваться.
Буду признателен за любые предложения / информацию, которые укажут мне правильное направление.
Спасибо.
Комментарии:
1. (1) HTTP 403 указывает на проблему с разрешениями или ролями, которые пользователь, пытающийся выполнить вызов API. Поэтому убедитесь, что у вас есть необходимые роли, назначенные для пользователя, чтобы они могли выполнять операцию (помимо ваших разрешений) (2) Вне вашего кода я бы попробовал предложить использовать Microsoft Graph explorer / POSTMAN с тем же вызовом Graph API и посмотреть, работает ли это (3) Протестируйте свойтокен (я вижу, что вы это уже сделали) и его области / разрешения и т. Д
2. Привет, у вас есть возможность изучить мой ответ? было ли это полезно для вас?
3. Полезен ли вам ответ Карла? Если у вас также есть какие-либо вопросы, вы можете сообщить нам. Если его решение поможет вам, вы можете отметить его ответ как принятый , вы можете помочь большему количеству пользователей форума.
Ответ №1:
Первое, что вам нужно знать, это то, что вы должны быть глобальным администратором или администратором группы и владельцем команды, чтобы добавлять гостей в команду, поэтому вы должны войти в систему как пользователь с ролью администратора, прежде чем сможете добавлять гостевых пользователей.
Таким образом, вы не можете использовать разрешение приложения для получения токена, поскольку у него нет входа пользователя, вы можете использовать его для добавления пользователей-участников, но его нельзя использовать для добавления гостей. Вам нужно добавить члена команды.ReadWrite.All delegates permissions
, а затем предоставляет согласие администратора, а затем вам нужно использовать поток кода аутентификации для получения токена доступа.
Комментарии:
1. У меня такая же проблема, пытаюсь сделать это с помощью PHP. Отлично работает в Graph Explorer. Похоже, мне нужно реализовать права делегирования, которые представляют собой pita — в документах указано «требуется одно из следующих разрешений», так что они ошибаются? docs.microsoft.com/en-us/graph/api /…
2. @MattB Можете ли вы задать новый вопрос и направить меня по ссылке на ваш вопрос?
3. У меня возникла проблема: github.com/microsoftgraph/msgraph-sdk-php/issues/363 — но я думаю, что приведенный выше вопрос охватывает этот вопрос, и ваш ответ наводит меня на правильный путь.