Как читать электронную почту из учетной записи Outlook 365 без взаимодействия с пользователем для получения учетных данных? - PullRequest
0 голосов
/ 19 мая 2018

Мой вариант использования следующий.Через регулярные промежутки времени демон-процесс должен:

  1. Сканирование учетной записи электронной почты в Office 365 для отчетов о недоставке,
  2. Извлечение некоторой информации из тела письма,
  3. Выполните задачу для учетной записи пользователя, определенной из этой информации.

Мой подход состоял в том, чтобы использовать Microsoft Graph (на котором я новичок), чтобы войти и сделать это - однако, если естьпроще подход, пожалуйста, дайте мне знать.У меня проблемы с API графа .NET для аутентификации и получения токенов без взаимодействия с пользователем.

Мне удалось использовать образец консоли Microsoft Graph (https://github.com/microsoftgraph/console-csharp-connect-sample) для подключения к учетной записи электронной почты).после обычной настройки приложения и его разрешений / областей действия в Office 365 и использования идентификатора приложения и «секретного» для подключения.

Однако, потратив целый день на исследования и попытки различных способовАутентификация в примере приложения всегда вызывает окно входа в систему (см. https://i.imgur.com/SmtPpYd.png), прежде чем можно будет выполнить действия API. К сожалению, мне не удалось обнаружить, как проходить аутентификацию и получать токены без взаимодействия с пользователем.

Может ли кто-нибудь помочь мне в том, как этот образец должен быть изменен - ​​то есть, как нужно изменить аутентификацию - чтобы он работал, не прося пользователя войти в систему?

У меня есть полный доступ администратора,поэтому можно предоставить любые разрешения, необходимые в Office 365, мне просто нужна помощь, чтобы решить, что предоставить и что изменить вКонсольное приложение для пропуска взаимодействия с пользователем.Это моя первая встреча с MS Graph, и моя голова кружится, поэтому, пожалуйста, будьте осторожны.:)

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

1 Ответ

0 голосов
/ 19 мая 2018

В этом примере приложения используется общедоступный клиент (который не может хранить секреты, потому что вы не контролируете устройство / ОС / среду), как вы можете видеть здесь .
Здесь получить токен, используя общедоступную идентификационную информацию приложения и личность пользователя (отсюда и подсказку).
Вы должны заменить его на ConfidentialClientApplication вместо предоставления дополнительного секрета (который вы можете сгенерировать на портале).), а затем замените получение запросом только для токена клиента .
Поскольку ваше приложение не собирается хранить какие-либо идентификационные данные пользователя, ни один из ярлыков / me не будет работать.
Наконец, какВы хотите сканировать всех пользователей, вам нужно изменить разрешения, которые вы запрашиваете, на разрешение / область администратора и заменить User.Read и Mail.Read на User.Read.All и User.Read.All.(не забудьте нажать кнопку «Предоставить разрешения» после сохранения областей. Надеюсь, это поможет

...