Используйте стандартную учетную запись пользователя для загрузки почты на основе подписок - PullRequest
0 голосов
/ 23 октября 2018

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

Справочная информация:

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

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

Чтобы решить эту проблему, я искал два варианта, но не нашел много:

  1. Ограничить доступ идентификатора приложения к определенным почтовым ящикам -> Я думаю, что это невозможно
  2. Создатьсвоего рода ужинать с пользователем и делиться всеми почтовыми ящиками с этим пользователем и использовать его учетные данные для загрузки содержимого почты на основе входящего уведомления

Кто-то пробовал решение 2 или может привести меня к некоторым документам?
Насколько я знаю, возможен только интерактивный вход пользователя?

1 Ответ

0 голосов
/ 23 октября 2018

Это побочный эффект от использования учетных данных клиента.Поскольку вы аутентифицируете свое приложение вместо пользователя (вы часто слышите, что это описывается как только для приложений против приложение + пользователь ).Когда вы аутентифицируете приложение, оно фактически является ограниченным суперпользователем («ограниченным» с точки зрения суперпользователя для согласованной вами области).

Модель общего почтового ящика (часто называемая «служебной учетной записью») работает, но она может быть очень хрупкой.Вам необходимо создать механизм для повторной аутентификации этой учетной записи, когда / если что-то идет не так с вашими токенами Access / Refresh.Вам также нужен механизм для уведомления вас о том, что что-то произошло, и надежный процесс, чтобы кто-то, кроме вас, мог восстановить настройки через 2 года.Это также создает головную боль поддержки, поскольку вам нужно пройти каждого пользователя через общий доступ к его почтовому ящику (не совсем привычный рабочий процесс для большинства пользователей).

Вместо того, чтобы просить каждого пользователя пройти процесс обмена, я бы попросил его авторизовать приложение.Затем вы настраиваете подписку, используя отдельное приложение + токен пользователя для каждого пользователя.Эта модель требует некоторых из тех же механизмов, которые описаны выше, но они ориентированы на самообслуживание и, следовательно, меньше зависят от ИТ, помня, как это было настроено годами спустя.

Чтобы сделать это, вам нужно поднять несколько элементов:

  • Вам нужна веб-страница, которая описывает происходящее и представляет «Войти в MicrosoftКнопка, которая аутентифицирует пользователя.

  • Вам нужна веб-страница, на которую пользователь попадет после завершения процесса (т. Е. Страница «Спасибо»).

  • Вам необходимо надежно сохранить токен обновления для каждого пользователя.Это менее рискованно, чем кажется, поскольку любому злонамеренному хакеру потребуется и ваш секрет клиента и токен обновления.

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

Рабочий процесс выглядит примерно так:

  1. Пользователь аутентифицируется в вашей службе
  2. Используя начальный токен доступа, вы настраиваетеподписка
  3. Жетон обновления сохранен.
  4. Когда приходит уведомление, служба выполняет токен Refresh и получает сообщение (я).
  5. Новый токен обновления был возвращен на шаге 4, поэтому вам также необходимо заменить токен, который вы ранее сохранили на шаге 3.

Я бы также подумал об использовании /deltaпри получении сообщений.Это позволяет получать только те сообщения, которые поступили с момента последнего выполнения /delta.Он использует «дельта-токен» для отслеживания сообщений, которые уже были обработаны.Вы можете сохранить этот токен вместе с токеном Refresh (я бы также сохранил там метаданные подписки).

Это сложный процесс, и переполнение стека - не лучший форум для этого.Если вы запутались, изучая эту модель, дайте мне знать, и мы сможем начать чат и пройти через этот период вопросов и ответов (я всегда могу обновить этот ответ, если потребуется позже).

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