Не могу получить доступ к общему почтовому ящику через EWS. 401 Несанкционированный в C # - PullRequest
1 голос
/ 10 октября 2019

У меня есть общий почтовый ящик , к которому я пытаюсь подключиться в EWS. Я могу нормально получить доступ к почтовому ящику из своего экземпляра Outlook 2016 без необходимости предоставления учетных данных. Когда я пытаюсь получить к нему доступ через EWS, я получаю следующую ошибку:

"Запрос не выполнен. Удаленный сервер возвратил ошибку: (401) Unauthorized."

Я использую этот код под своей учетной записью AD, которая имеет доступ к этому почтовому ящику. Почему бы мне не иметь доступа в этом случае? Ниже приведен проблемный код.

        service = new ExchangeService(ExchangeVersion.Exchange2010_SP2);
        service.Url = new Uri("https://outlook.office365.com/EWS/Exchange.asmx");

        service.UseDefaultCredentials = true;

        var shared_mailbox = new FolderId(WellKnownFolderName.Inbox, "mailbox@mydomain.com); 
        FindItemsResults<Item> results = service.FindItems(shared_mailbox, dateTimeFilter, view); //401 is thrown here. 

Кто-нибудь видит что-то не так или отсутствует?

1 Ответ

0 голосов
/ 10 октября 2019

Я бы посоветовал вам взглянуть на использование современной аутентификации (что и Outlook должен использовать). Чтобы использовать учетные данные, вошедшие в систему в данный момент, вам необходимо использовать библиотеку MSAL и следовать https://github.com/AzureAD/microsoft-authentication-library-for-dotnet/wiki/Integrated-Windows-Authentication

После того, как вы получите токен, используйте

 ExchangeService service = new ExchangeService(ExchangeVersion.Exchange2016);
 service.Url = new Uri("https://outlook.office365.com/ews/exchange.asmx");
 service.Credentials = new OAuthCredentials(TokenResult.AccessToken);
 service.HttpHeaders.Add("X-AnchorMailbox", MailboxName);

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

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