Graph API assignLicense: недостаточно прав для выполнения операции.

Я пытаюсь использовать Microsoft Graph API с проверкой подлинности приложений, чтобы назначить лицензию Office365 только что созданному пользователю. Мое приложение имеет разрешения для приложения «Directory.Read.All» и «User.ReadWrite.All». Я могу успешно создавать (POST / users) и удалять (DELETE / users / $ id) пользователей, и я могу получить список подписок (GET / subscribedSkus). Но если я попытаюсь назначить лицензию, я получаю ответ 403:

https://graph.microsoft.com/v1.0/users/ $ upn / assignLicense

{
  "error": {
    "code": "Authorization_RequestDenied",
    "message": "Insufficient privileges to complete the operation.",
    "innerError": {
      "request-id": "...",
      "date": "..."
    }
  }

Однако согласно документации Graph API разрешения приложения "User.ReadWrite.All" должно быть достаточно. Тело моего запроса выглядит следующим образом:

{
  "addLicenses": [
    {
      "disabledPlans": [],
      "skuId": "..."
    }
  ],
  "removeLicenses": []
}

Любая идея, почему разрешений «User.ReadWrite.All» недостаточно, несмотря на то, что в документе Graph API говорится об обратном?


person phatoni    schedule 14.06.2017    source источник
comment
Похоже, вам нужно назначить объекту приложения роль администратора (например, глобального администратора или администратора учетных записей пользователей). Я это еще не тестировал.   -  person phatoni    schedule 15.06.2017
comment
он работает с Directory.ReadWrite.All? Потому что это единственные разрешения, упомянутые здесь developer.microsoft.com/en- us / graph / docs / Concepts /, который позволяет вам управлять лицензиями ... так что, возможно, есть ошибка либо в документе assignLicense, либо в самом API ...   -  person andresm53    schedule 15.06.2017
comment
Хороший момент, я попробую Directory.ReadWrite.All. Я хотел предоставить только минимальный набор необходимых разрешений и поэтому использовал User.ReadWrite.All, но поскольку я собираюсь назначить роль глобального администратора, это не имеет значения.   -  person phatoni    schedule 16.06.2017
comment
Я дважды проверю это. Возможно, потребуется Directory.ReadWrite.All, потому что для назначения лицензии вам действительно нужно иметь возможность читать подписки, которые есть у компании, что потребует, по крайней мере, возможности чтения каталога. Возможно, хватит User.ReadWrite.All и Directory.Read.All. Я вернусь в ближайшее время.   -  person Dan Kershaw - MSFT    schedule 19.06.2017


Ответы (1)


Теперь я могу подтвердить, что assignLicense работает, если приложению предоставлено разрешение Directory.ReadWrite.All. Разрешения User.ReadWrite.All недостаточно для выполнения assignLicense.

person phatoni    schedule 12.07.2017