Использование Microsoft Graph API для чтения почты от имени пользователей на предприятии - PullRequest
0 голосов
/ 26 ноября 2018

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

В моем приложении у меня есть следующие разрешения:

Microsoft Graph Application Permissions

Я использовал https://login.microsoftonline.com/common/adminconsent?..., чтобы предоставить приложению разрешения на чтение почты во всех почтовых ящиках, и после этого я использовал аутентификацию OAuth2 для получения токена Bearer.

Этоответ, который я получил от конечной точки токена:

{
  "token_type": "Bearer",
  "scope": "Mail.Read User.Read User.Read.All profile openid email",
  "access_token": "<token>",
  "expires_in": 3599,
  "ext_expires_in": 3599
}

Когда я использовал это для доступа к почтовому ящику через https://graph.microsoft.com/v1.0/users/USER-ID/messages, я получил следующий ответ

{
  "error": {
    "code": "ErrorAccessDenied",
    "message": "Access is denied. Check credentials and try again.",
    "innerError": {
      "request-id": "a31bcf73-4bd6-4fed-bfee-d70328e0703e",
      "date": "2018-11-26T15:20:37"
    }
  }
}

Однако, когда я использую этоконечная точка с идентификатором пользователя аутентифицированной учетной записи администратора, я могу получить доступ к сообщениям в этом почтовом ящике.

Но я хотел бы получить доступ к почтовым ящикам всех пользователей в организации через MicrosoftГрафик.

1 Ответ

0 голосов
/ 27 ноября 2018

Конечные точки Outlook работают немного по-другому, чем большинство конечных точек графика, вместо того, чтобы иметь .all вариацию своих областей (т. Е. user.read против user.read.all), это зависит от того, какой тип области (делегированный или прикладной)) используется.

Когда используются делегированные области, Mail.Read предоставляет доступ только к почтовому ящику аутентифицированного пользователя (единственным исключением являются те, которые явно предоставлены этому пользователю).

Когда используются области приложения, Mail.Read предоставляет доступ к почтовому ящику любого пользователя.

Теперь, когда все становится немного странно, тип применяемой области видимости полностью зависит от OAuth-гранта, используемого для получения токена .

  • При использовании неявных или кодов авторизации применяются делегированные области.
  • При использовании гранта Client Credentials применяются области приложения.

Таким образом, чтобы получить доступ к почтовому ящику любого пользователя через /v1.0/users/{someUser}/messages, сначала необходимо получить свой токен, используя OAuth-грант Client Credentials.О том, как это работает, вы можете найти в документации по «Получить доступ без пользователя» .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...