Добавьте члена команды через Graph API. Ответ: 403

#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 — но я думаю, что приведенный выше вопрос охватывает этот вопрос, и ваш ответ наводит меня на правильный путь.