如何注册MSFT Oauth2权限,例如未在AAD的资源API列表中列出SMTP AUTH

问题描述

任何人都可以解释如何在未列出Outlook.office.com的情况下,在相应的AAD权限中指定URI为https://outlook.office.com的MSFT Oauth2客户端作用域(例如,SMTP AUTH或IMAP所需)。资源API列表?

MSFT推送图(确实具有SMTP AUTH权限),但是他们已经确认SMTP AUTH和IMAP仅在Outlook资源API中实现。测试确认:如果客户端使用范围https://graph.microsoft.com/SMTP.Send,并且AAD Microsoft Graph权限为 SMTP.Send ,则身份验证失败。严格的测试在于访问令牌中的“ aud”声明:如果它是“ 00000003-0000-0000-c000-000000000000”(又名图),则身份验证失败,而https://outlook.office.com的“ aud”将成功(其他都一样)。

我会天真地认为客户端范围和AAD 权限资源API应该具有相同的URI。

如果我不能在AAD中指定超集,我看不到细化权限(AAD权限是客户端范围的超集,而客户端在需要时要求它们的最低要求)如何工作! / p>

我已要求MSFT给予启发,但没有回应。

=====

其他测试: 如果AAD Graph权限为空,并且客户范围仅为https://outlook.office.com/SMTP.Send,则访问令牌的{aud}为https://outlook.office.com,SMTP为scp。发送,并且身份验证正常。

但是,如果客户端作用域还包含诸如Mail.Send之类的Graph范围,则“ aud”更改为00000003-0000-0000-c000-000000000000(又名Graph),并且随后的身份验证将失败,并显示“凭据不正确”。我本来希望从令牌端点发出“范围要求两个不同资源的令牌”的错误消息。

而且,正如预期的那样,如果客户端作用域仅为SMTP。发送(或https://graph.microsoft.com/SMTP.Send;现在是图URI前缀,现在是认值)的身份验证将失败,并显示“凭据不正确”

这些正在使用MSFT建议的V2授权和令牌终结点。

====

更多回复: @Allen Wu-我找不到IMAP.AccessAsUser.All,POP.AccessAsUser.All和SMTP.Send在Exchange下列出(API权限=> +添加权限=>请求API权限/ Microsoft API => Exchange或在Office 365 Exchange下联机(API权限=> +添加权限=>请求API权限/我的组织使用的API => Office 365 Exchange Online)。它们仅在Graph下列出。这会导致奇怪的情况:

提供您的评论“我们看到权限位于Azure门户中的Microsoft Graph下,但实际上已将其添加到Outlook端点中”,MSFT可以避免很多混乱(其他StackOverflow发布者也记录了类似的问题),如果他们只是在AAD API权限中列出了outlook.office.com API,直到Graph访问了一组完整的端点和权限。我意识到他们希望开发人员使用Graph,但是目前的状况类似于半怀孕!

解决方法

在这种情况下,您只需要选择Microsoft图形权限(SMTP AUTH或IMAP)。

当前,当您需要获取访问令牌时,可以将scope指定为https://outlook.office.com/{SMTP AUTH or IMAP permission}

我认为权限仍在更改。将来,Outlook权限应包含在Microsoft Graph中。