我从http://dev.office.com/code-samples-detail/5985下载了Office 365 Connect ASP.NET MVC示例代码,将其注册为Azure Active Directory中的应用程序(我拥有全局管理员权限),为其提供了所需的权限 - “登录并阅读用户配置文件'和'以用户身份发送邮件'(没有其他人),并使用'ClientID'和'ClientSecret'配置web.config。该应用程序允许我与Office 365连接,但在我尝试发送电子邮件时返回“禁止”。
使用VS2015调试器我捕获了登录时收到的AccessToken,并用http://jwt.calebb.net/对其进行了解码。它说令牌提供“User.Read”权限,就是这样。我了解该令牌仅提供应用程序和用于登录Office 365的用户凭据的权限。但我已使用Outlook Web Access验证用户凭据确实具有邮箱和发送电子邮件的权限。
那么,对于为什么我没有获得我在AAD中配置的所有权限的任何想法?
答案 0 :(得分:0)
我怀疑您已将Send Mail设置为应用程序权限(使用客户端凭据作为应用程序进行身份验证 - 通常更多是后台进程)而不是委托权限(作为特定用户进行身份验证)。
答案 1 :(得分:0)
下次在使用该应用前登录时,是否可以在网址末尾添加& prompt = consent ?看起来应该是这样的:
这会提示重新发送,以便您对权限的更新显示给用户,他们可以同意,并且这些权限将包含在返回的令牌中。