Мультитенантное приложение с предварительным согласием не может вызывать API-интерфейс графа

Я хотел бы сделать приложение автоматически доступным для всех клиентов в нашей партнерской учетной записи, для которого не требуются учетные данные пользователя.

Для этого я создал веб-приложение на лазурном языке, которое является многопользовательским и имеет доступ к разрешениям приложения через приложение «Microsoft graph».

Я выполнил руководство Microsoft для включения и все прошло хорошо.

Затем я попытался протестировать вызовы графического API с моим клиентом:

POST https://login.microsoftonline.com/<my-tenant-id>/oauth2/token
=> got the token
GET https://graph.microsoft.com/v1.0/users
=> Got the users of my-tenant

Затем я попробовал с арендатором клиента:

POST https://login.microsoftonline.com/<customer-tenant-id>/oauth2/token
=> got the token
GET https://graph.microsoft.com/v1.0/users
=> 
{
  "error": {
    "code": "Service_InternalServerError",
    "message": "Encountered an internal server error.",
    "innerError": {
      "request-id": "270ef482-e7ca-4184-bb9e-0567b123b7ab",
      "date": "2016-09-15T10:00:14"
    }
  }
}

Почему я получаю эти 500, разве этот вызов не должен работать, если у меня есть токен oauth для клиента клиента?

Также быстрые дополнительные вопросы: работает ли предварительное согласие для ранее существующих арендаторов? И если разрешения будут изменены, это повлияет на всех арендаторов, не выполняя никаких действий?


Обновление: после многих попыток он начал работать с теми же командами. Однако я попробовал другой случайный клиент, и он дал мне 500 ... Буду продолжать попытки и обновлять


person Luke Marlin    schedule 15.09.2016    source источник
comment
Получил аналогичную проблему. Мой пост здесь: stackoverflow.com/questions/46003777/. Удалось ли вам заставить его работать, не заходя на страницу согласия администратора?   -  person Normand Bedard    schedule 04.09.2017


Ответы (1)


Похоже, это была проблема с согласием. Независимо от того, использую я новый клиент или нет, я должен перейти к https://login.windows.net/common/oauth2/authorize?response_type=code&client_id=%7B0%7D&prompt=admin_consent (где {0} является cliendId приложения), а затем он работает

Поэтому, вероятно, что-то не так с автосогласием, но это вопрос для отдельного вопроса.

person Luke Marlin    schedule 15.09.2016