oauth2.0 连接到outlook Office 365 IMAP使用OSP2

iqih9akk  于 9个月前  发布在  其他
关注(0)|答案(4)|浏览(107)

引用了https://msdn.microsoft.com/en-us/office/office365/api/use-outlook-rest-api。我仍然不能理解AD,Outlook和Windows Live。
我从https://login.microsoftonline.com/common/oauth2/v2.0/authorizehttps://login.microsoftonline.com/common/oauth2/v2.0/token获得了刷新令牌和访问令牌
和范围
openid email profile offline_access https://outlook.office.com/mail.sendhttps://outlook.office.com/mail.readwrite
我仍然得到错误,而连接imap使用访问令牌。

imap.authenticate('XOAUTH2', 'xxxxxxx', access_token)
Net::IMAP::NoResponseError: AUTHENTICATE failed.

字符串

ny6fqffe

ny6fqffe1#

我终于让这个工作。有趣的是,我不得不使用范围https://outlook.office365.com/IMAP.AccessAsUser.All,虽然现在你必须在Azure AD中的Graph API部分下注册你的应用程序,并且建议的范围是https://graph.microsoft.com/IMAP.AccessAsUser.All,这对我不起作用(身份验证失败)。虽然我不确定这在不久的将来是否会改变。
我使用的属性如下:https://javaee.github.io/javamail/OAuth2

props.put("mail.imap.sasl.enable", "true");
props.put("mail.imap.sasl.mechanisms", "XOAUTH2");
props.put("mail.imap.auth.login.disable", "true");
props.put("mail.imap.auth.plain.disable", "true");

字符串

rqqzpn5f

rqqzpn5f2#

对于那些询问个人帐户IMAP的人-Outlook.com

-- re:comment
显然,消费者Outlook.com(也称为live.com)的作用域是wl.imap
参见Scopes and permissions上的旧Microsoft文档。

  • 更新:另请参阅较新的Microsoft文档使用Windows Live作用域和Outlook REST API访问Outlook.com邮箱数据

也可以看看这个例子,其中提到了相同的范围:
http://afterlogic.com/mailbee-net/docs/OAuth2MicrosoftRegularAccountsInstalledApps.html
顺便说一句,我们从 Clever Components 文章中看到了旧的Microsoft文档:
https://www.clevercomponents.com/articles/article049/

    • 注意:他们声称这是为365美元可能是有问题的,也许是他们的一部分文件错误 *

它有一个指向微软文档的链接:
https://msdn.microsoft.com/en-us/windows/desktop/dn440163
它在页面末尾列出的相关部分中有一个到Scopes and permissions的链接:
https://msdn.microsoft.com/en-us/windows/desktop/hh243646
Clever Components 文章中,他们使用了两个作用域wl.imapwl.offline_access
他们指出:
Microsoft建议将“wl.offline_access”作用域与“wl.imap”一起使用。否则,只有当用户登录Live Connect并使用您的应用时,应用才能访问用户的信息。
因此,如果您的应用程序需要连续访问,则需要包括脱机访问范围。

mxg2im7a

mxg2im7a4#

这使得我自己的OAuth IMAP实现非常令人沮丧,因为Microsoft's own documentation on this topic仍然建议使用offline_accesshttps://outlook.office365.com/IMAP.AccessAsUser.All等端点。
但是,当尝试在Azure门户中注册新应用程序并转到“API权限”侧边栏选项卡并选择“添加权限”时,“请求API权限”侧边栏弹出窗口没有任何地方提到Office 365 Exchange Online。它可以在“我的组织使用的API”下找到。选项卡并从列表中选择它,但在列表中没有与IMAP.AccessAsUser.All匹配的应用程序或委托权限,尽管这是所有https://outlook.office.com/* API端点的适当部分。
最后,事实证明,您必须使用“请求API验证”屏幕顶部的大型“Microsoft Graph”API按钮,并从那里选择offline_accessIMAP.AccessAsUser.All但不要使用它启用的graphs.microsoft.com URL。继续使用范围字符串:offline_access https://outlook.office365.com/IMAP.AccessAsUser.All为这两个,OAuth将在作为用于在OAuth弹出窗口中进行身份验证的电子邮件地址进行身份验证时起作用。
尽管IMAP.AccessAsUser.All仅此还不足以允许帐户在获得OAuth令牌后使用不同的From:地址发送。OAuth令牌也仅对用于为应用程序生成OAuth承载令牌的电子邮件地址有效。必须委派更多权限才能访问其他邮箱。

相关问题