使用 Office365 和 MicrosoftGraph 发送邮件失败 "Forbidden"
Sending mail with Office365 & MicrosoftGraph fails with "Forbidden"
我从 http://dev.office.com/code-samples-detail/5985 下载了 Office 365 Connect ASP.NET MVC 示例代码,将其注册为 Azure Active Directory 中的应用程序(我拥有全局管理员权限),并为其授予了所需的权限 - 'Sign in and read user profile' 和 'Send mail as a user'(没有其他),并用 'ClientID' 和 'ClientSecret' 配置了 web.config。该应用程序允许我连接 Office 365,但是当我尝试发送电子邮件时 returns "Forbidden"。
我使用 VS2015 调试器捕获了我在登录时收到的 AccessToken,并使用 http://jwt.calebb.net/ 对其进行了解码。它说令牌提供 "User.Read" 权限,仅此而已。我了解令牌仅提供可从应用程序和用于登录 Office 365 的用户凭据获得的权限。但我已使用 Outlook Web Access 验证用户凭据确实具有邮箱和发送电子邮件的权限。
那么,关于为什么我没有获得我在 AAD 中配置的所有权限有什么想法吗?
我怀疑您已将发送邮件设置为应用程序权限(使用客户端凭据作为应用程序进行身份验证 - 通常作为后台进程)而不是委派权限(作为特定用户进行身份验证)。
下次使用app前登录,可以在url的末尾加上&prompt=consent吗?它应该看起来像这样:
这会提示重新同意,以便向用户显示您所做的权限更新,他们可以同意,并且这些权限将包含在返回的令牌中。
我从 http://dev.office.com/code-samples-detail/5985 下载了 Office 365 Connect ASP.NET MVC 示例代码,将其注册为 Azure Active Directory 中的应用程序(我拥有全局管理员权限),并为其授予了所需的权限 - 'Sign in and read user profile' 和 'Send mail as a user'(没有其他),并用 'ClientID' 和 'ClientSecret' 配置了 web.config。该应用程序允许我连接 Office 365,但是当我尝试发送电子邮件时 returns "Forbidden"。
我使用 VS2015 调试器捕获了我在登录时收到的 AccessToken,并使用 http://jwt.calebb.net/ 对其进行了解码。它说令牌提供 "User.Read" 权限,仅此而已。我了解令牌仅提供可从应用程序和用于登录 Office 365 的用户凭据获得的权限。但我已使用 Outlook Web Access 验证用户凭据确实具有邮箱和发送电子邮件的权限。
那么,关于为什么我没有获得我在 AAD 中配置的所有权限有什么想法吗?
我怀疑您已将发送邮件设置为应用程序权限(使用客户端凭据作为应用程序进行身份验证 - 通常作为后台进程)而不是委派权限(作为特定用户进行身份验证)。
下次使用app前登录,可以在url的末尾加上&prompt=consent吗?它应该看起来像这样:
这会提示重新同意,以便向用户显示您所做的权限更新,他们可以同意,并且这些权限将包含在返回的令牌中。