Аутентификация в серверном приложении Microsoft Graph - PullRequest
0 голосов
/ 15 февраля 2019

У меня есть консольное приложение (которое будет выполнено в пакете), которое должно:

  • Чтение писем из общего почтового ящика Office365 и сохранение их в базе данных
  • Чтение писемиз базы данных и отправьте их с Office365

. Для этого я изучал, как правильно аутентифицировать Microsoft Graph.Я видел, что есть не рекомендуемая опция, которая заключается в использовании пароля grant_type.Даже зная, что это не лучшая идея, этот подход лучше подходит для моих нужд, потому что мне нужно использовать только одну почту пользователя.По этой причине я попытался проверить этот тип журнала, зарегистрировав приложение в моей Azure Active Directory, предоставив некоторые делегированные разрешения:

Список предоставленных разрешений

Иотправка почтового запроса к конечной точке входа в систему:

https://login.microsoftonline.com/{{tenant}}/oauth2/v2.0/token

С параметрами:

  • grant_type: пароль
  • область действия: https://graph.microsoft.com/.default
  • client_id: client_id
  • client_secret: client_secret
  • имя пользователя: электронная почта пользователя / идентификатор пользователя
  • пароль: пароль

Я также пытался изменить конечную точку v1.0 для ресурса

Но ответ следующий:

{
"error": "invalid_grant",
"error_description": "AADSTS50034: The user account does not exist in the {{Tenant}} directory. To sign into this application, the account must be added to the directory.\r\nTrace ID: XXXXXXXXXXXXX\r\nCorrelation ID: XXXXXXXXXXXXX\r\nTimestamp: 2019-02-15 12:12:15Z",
"error_codes": [
    50034
],
"timestamp": "2019-02-15 12:12:15Z",
"trace_id": "XXXXXXXXXXXXXXXXX",
"correlation_id": "XXXXXXXXXXXXXXXXX"
}

Когда я заглядываю в раздел пользователей Azure Active Directory на портале,Пользователь, который я пытаюсь войти, это там.На самом деле, если я получаю токен с помощью client_credentials grant_type (предоставляя приложению в приложении AAD разрешения разрешать чтение пользователям) и запрашиваю всех пользователей, он также есть.

Так что яя делаю неправильно?Правильно ли использовать адрес электронной почты в качестве значения имени пользователя?Должен ли я регистрировать пользователей в любом месте портала, чтобы граф имел к ним доступ?Или есть другая причина, которая мешает мне войти в систему?

Спасибо!

...