Подключение к обмену через Интернет с помощью Microsoft Graph API через приложение Demon - PullRequest
0 голосов
/ 09 января 2019

Я пытаюсь подключиться для обмена в Интернете и выполнения определенных операций с электронными письмами с использованием Microsoft Graph API 1.0, и все это делается в программе демона. Я использую рабочий процесс Client Credential для аутентификации, ниже приведен небольшой фрагмент кода

AuthenticationContext authenticationContext = new AuthenticationContext(string.Format(CultureInfo.InvariantCulture, azureEndPoint, tenant));
            ClientCredential clientCredential = new ClientCredential(clientId, clientSecret);
            AuthenticationResult authenticationResult = await authenticationContext.AcquireTokenAsync(resource, clientCredential);

Но для того, чтобы этот код возвращал маркер аутентификации, я должен получить Разрешения приложений для идентификатора приложения Azure для Microsoft API Graph API. Предостережение заключается в том, что если разрешение предоставлено, то у идентификатора приложения будет доступ для чтения электронных писем всех пользователей в организации, и по этой причине администратор арендатора строго отказался предоставить разрешение.

Я попытал счастья с рамками согласия, но это требует вмешательства пользователя для ввода его / ее идентификатора и пароля, что невозможно в случае программы-демона. Я прочитал несколько блогов, как показано ниже, но все они заканчивают тем, что вводили пароль идентификатора пользователя, чтобы добраться до URL перенаправления, который побеждает всю демоническую вещь https://blogs.msdn.microsoft.com/exchangedev/2015/01/21/building-daemon-or-service-apps-with-office-365-mail-calendar-and-contacts-apis-oauth2-client-credential-flow/

Можно ли как-нибудь предоставить доступ на чтение / запись к идентификатору приложения Azure для определенных идентификаторов электронной почты в клиенте? Или, альтернативно, какой-нибудь умный способ как-то попасть в почтовый ящик без вмешательства пользователя?

Заранее спасибо,

Вивек

1 Ответ

0 голосов
/ 09 января 2019

Вы можете использовать разрешения приложения только для потока предоставления учетных данных клиента.

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

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

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