Ошибка: для этого типа маркера oauth должен присутствовать заголовок SOAP ExchangeImpersonation. - PullRequest
1 голос
/ 15 мая 2019

Я пытаюсь использовать Exchange Web Services (EWS) с приложением и аутентификацией OAuth2.

Что я сделал:

  • зарегистрировано в приложении портала Azure, предоставлены все необходимые разрешения (даже full_access_as_app для Exchange); принял эти разрешения в качестве администратора;
  • подготовил правильный токен на предъявителя OAuth2 (с областью действия https://outlook.office365.com/.default);
  • подготовленный запрос SOAP с пользовательским интерфейсом SOAP. В качестве основы для этого запроса я использую этот: https://docs.microsoft.com/en-us/exchange/client-developer/web-service-reference/getattachment-operation. Кроме того, я добавил заголовок HTTP-авторизации с токеном на предъявителя, X-AnchorMailbox с целевым почтовым ящиком.

В результате я получаю следующее: «Для этого типа токена OAuth должен присутствовать заголовок ExchangeImpersonation SOAP». Я не могу понять, что мне делать, чтобы это исправить.

Даже пробовал с ExchangeImpersonate и SmtpAddress с тем же адресом почтового ящика, что и выше, но таким образом я получаю другую ошибку «Почтовый ящик не найден». Но почтовый ящик есть! (проверено на нескольких почтовых ящиках).

Мои вопросы: что я делаю не так с EWS?

Запрос:

POST https://outlook.office365.com/ews/Exchange.asmx
Authorization: Bearer <token>
X-AnchorMailbox: mailbox@something.onmicrosoft.com


<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:t="http://schemas.microsoft.com/exchange/services/2006/types">
  <soap:Header>
        <t:RequestServerVersion Version="Exchange2016"/>
        <t:ExchangeImpersonation>
            <t:ConnectingSID>
                <t:PrimarySmtpAddress>
                    mailbox@something.onmicrosoft.com
                </t:PrimarySmtpAddress>
            </t:ConnectingSID>
        </t:ExchangeImpersonation>
  </soap:Header>
  <soap:Body>
    <GetAttachment xmlns="http://schemas.microsoft.com/exchange/services/2006/messages"
    xmlns:t="http://schemas.microsoft.com/exchange/services/2006/types">
      <AttachmentShape/>
      <AttachmentIds>
        <t:AttachmentId Id="AAMkADAwNzdjNTg3LTc4M2ItNDE0Yi05MTk4LTQxZDBlYTc1NmMxZgBGAAAAAAAiixtLGariQY7rf5pAKRZZBwBVk8babsuEQ4s2Znfj9fB5AAAAAAEMAABVk8babsuEQ4s2Znfj9fB5AADq3B14AAABEgAQAKZOAcjZCBxHpqvY6XmXp5w="/>
      </AttachmentIds>
    </GetAttachment>
  </soap:Body>
</soap:Envelope>

Ответ:

ErrorNonExistentMailbox The SMTP address has no mailbox associated with it.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...