使用Office365&MicrosoftGraph发送邮件失败,并显示“Forbidden”

问题描述:

我从http://dev.office.com/code-samples-detail/5985下载了Office 365 Connect ASP.NET MVC示例代码,将其注册为Azure Active Directory中的应用程序(我拥有全局管理员权限)权限 - '登录并阅读用户配置文件'和'以用户身份发送邮件'(不是其他人),并使用'ClientID'和'ClientSecret'配置web.config。该应用程序允许我与Office 365连接,但在尝试发送电子邮件时会返回“禁止访问”。使用Office365&MicrosoftGraph发送邮件失败,并显示“Forbidden”

使用VS2015调试我拍摄的的accessToken我在登录时收到,并与http://jwt.calebb.net/解码它。它说令牌提供“User.Read”权限,就这些。据我所知,只有令牌提供了可从应用程序和用于登录到Office 365的用户凭据两个权限,但我已经使用Outlook Web Access用户凭据确实有一个邮箱,并允许发送电子邮件验证。

那么,为什么我没有得到我在AAD配置的所有权限的任何想法?

下一次您在使用该应用程序之前登录,您可以添加&提示=同意到结束的URL?它应该是这个样子:

https://login.microsoftonline.com/common/oauth2/authorize?response_type=id_token&client_id=...&nonce=e231a375-6925-47d2-8704-9fce2d900620&prompt=consent

这促使一个reconsent以便更新您所做浮出水面用户的权限,他们可以同意才行,而这些权限将包括在返回的标记。

+1

这样做的窍门 - 问题解决了。谢谢。 – Chuck

我怀疑你已经设置了发送邮件作为一个应用程序许可(使用客户证书,认证为应用程序 - 通常随着越来越多的后台进程),而不是委托权限(为特定的用户进行身份验证)。

+0

两个权限我已经设置 - “登录和读取用户配置文件”和“发送邮件的用户是不需要管理员访问权限都委托权限。 – Chuck