在Microsoft Graph服务器端应用程序中进行身份验证

时间:2019-02-15 12:33:15

标签: azure oauth oauth-2.0 microsoft-graph

我有一个控制台应用程序(将分批执行),应该:

  • 从Office365共享邮箱中读取邮件并将其存储到数据库中
  • 从数据库中读取邮件,然后使用Office365发送邮件

为此,我一直在研究如何正确验证Microsoft Graph。我看到有一个不推荐的选项,其中包含使用密码Grant_type。即使知道这不是最好的主意,它也是一种更适合我的需求的方法,因为我只需要使用一个用户邮件。因此,我尝试通过在Azure Active Directory中注册应用程序并提供一些委托权限来测试这种日志:

List of permissions given

并针对登录端点发出发布请求:

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

带有参数:

我也尝试过使用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应用程序中授予应用程序权限以让用户读取)来获得令牌,并且我请求所有用户使用,则令牌也在那里。

那我做错了什么?使用电子邮件作为用户名值正确吗?我应该在门户的任何位置注册用户以允许图形访问他们吗?还是有其他原因阻止我进行登录?

谢谢!

0 个答案:

没有答案