Доступ к почтовому ящику Exchange 2016 с использованием Graph API (гибридная установка) - PullRequest
0 голосов
/ 28 февраля 2019

У меня есть почтовый ящик на сервере предварительного обмена (который находится в гибридном режиме) abc@onprem.com, и я пытаюсь получить к нему доступ через Graph API (/ messages).Это прекрасно работает, если я делаю это в графическом обозревателе, но не работает, когда я делаю это через реализацию.

Требуемое разрешение приложения дается на портале регистрации приложений Azure.Реализация использует grant_type в качестве client_credentials с сертификатом , и это прекрасно работает для облачных пользователей.

Ответ API

{ 'error': {
    'innerError': {
        'date': '2019-02-28T14:17:45', 
        'request-id': '6a85f8c3-4e13-4cf0-84b2-ddc934241afd'
    },
    'message': '', 
    'code': 'UnknownError'
    }}

Журналы IIS

  1. Для вызова поступил из проводника графика

2019-02-28 15:02:31 172.31.10.98GET /api/V2.0/Users('abc@onprem.com') / Messages / $ count & CorrelationID =; & cafeReqId = bc8e8aef-de46-4c72-bcf4-b4f567bc45dd;443 S-1-5-21-1392771109-4043059535-3934338706-1147 20.190.145.177Mozilla / 5.0 + (Macintosh; + Intel + Mac + OS + X + 10_14_3) + AppleWebKit / 537.36 + (KHTML, + like + Gecko)+ Chrome / 71.0.3578.80 + Safari / 537.36 - 200 0 0 287

Для звонков из реализованного приложения

2019-02-28 15:00:05 172.31.10.98GET /api/V2.0/Users('abc@onprem.com')/Messages/ $ count & CorrelationID =; & cafeReqId = c504b658-b9df-43b5-9dbb-8e83050c3d2f;443 - 20.190.128.103- - 401 0 0 102

  1. Какова может быть причина этого сбоя аутентификации, может быть потому, что этот токен предоставляется Azure AD, который аутентифицируется на onprem?

Обновление

Добавлены еще несколько заголовков для ведения журнала и обнаружено, что ниже приведена ошибка.

2019-03-04 04:05:13 172.31.10.98 GET /api/V2.0/Users('abc@onprem.com')/Messages & CorrelationID =; & cafeReqId = 2823c302-3c84-4847-b586-accced4b6dd5;443 - 20.190.145.177 PostmanRuntime / 7.6.0 - 401 0 0 332 Носитель + eyJ0 бла-бла ..... бла-бла ..... hSd mail.onprem.com - - - Носитель + client_id = "00000002-0000-0ff1-ce00-000000000000 ", + token_types =" app_asserted_user_v1 + service_asserted_app_v1 ", + authorization_uri =" https://login.windows.net/common/oauth2/authorize",+error="invalid_token" 2000001; причина = "Этот + токен + профиль + 'V1S2SAppOnly' + не + применим + для + текущего + протокола +. "; error_category =" invalid_token "

Мы используем самозаверяющий сертификат на сервере Exchange, может ли это привести к этой проблеме? Если вам так интересно, как все работает в графическом обозревателе.

1 Ответ

0 голосов
/ 13 мая 2019

Проблема на самом деле в другом месте - похоже, Exchange не поддерживает поток client_credentials.Однако вы можете вызвать его с помощью следующей PowerShell (обязательно перезапустите IIS после применения):

$apps = Get-PartnerApplication
# Microsoft Graph is 2nd item in the array, if you are unsure, list the items by calling $apps first
$apps[1] | Set-PartnerApplication -AppOnlyPermissions $apps[1].ActAsPermissions

Полное объяснение можно найти здесь: https://blog.thenetw.org/2019/05/13/using-client_credentials-with-microsoft-graph-in-hybrid-exchange-setup/

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