通过 Exchange ActiveSync (EAS) 为 Office365 使用 OAuth2

Posted

技术标签:

【中文标题】通过 Exchange ActiveSync (EAS) 为 Office365 使用 OAuth2【英文标题】:Utilizing OAuth2 for Office365, through Exchange ActiveSync (EAS) 【发布时间】:2017-05-12 23:28:11 【问题描述】:

博文:Announcing Exchange ActiveSync v16.1 声明:

虽然不是 EAS 16.1 的一部分,但我们还想指出,Office 365 和 Outlook.com 客户现在都可以使用 OAuth 2.0 协议通过 EAS 进行授权。

我的问题是:我应该在 oauth 请求中使用哪个 范围

有没有一个例子,也许是完整的请求?

注意:有一个关于using OAuth for Office365 with IMAP 的类似问题,但这里我特意询问的是ActiveSync。我在comment to one of the answers on that thread 中引用了这个问题。

次要问题

感谢 Jason 的回答和一些额外的调整,我们设法使用 https://login.windows.net/common/oauth2 生成 oauth 令牌,但仅限于 office365 用户(组织帐户)而不是 Microsoft 用户帐户(live、hotmail、outlook.com...)

该令牌允许访问 ActiveSync 协议(通过 https://eas.outlook.com/Microsoft-Server-ActiveSync)和 EWS API(通过 https://outlook.office365.com/EWS/Exchange.asmx)。

很遗憾,我们找不到为 Microsoft online 帐户(hotmail、live、outlook.com)生成相同令牌的方法。我们尝试使用此端点:https://login.live.com/oauth20_authorize.srf,它只允许 activesync 而不允许 EWS。

有没有办法在两种协议(ActiveSync 和 EWS)上为组织帐户和在线帐户使用相同的令牌?

【问题讨论】:

我也有同样的问题!你弄明白了吗? 没有。我还是希望能找到答案…… 【参考方案1】:

抱歉,这花了这么长时间,但直到今天我才知道这个问题 :)。您需要在 Azure Active Directory 中将您的应用程序注册为本机应用程序:

然后添加 Access 邮箱作为通过 Exchange Web 服务登录的用户(在 Office 365 Exchange Online 下)委派权限。

注意:您不能在应用程序注册门户(https://apps.dev.microsoft.com)中注册,它需要在 Azure 门户(https://portal.azure.com/)中注册,并且您需要使用@987654324 @ 用于授权和令牌请求。

【讨论】:

感谢您的回答。但是,还有第二个问题:我们需要为 office365 用户和在线用户(hotmail、live 等)使用相同的令牌。我在问题中添加了完整的描述。 Azure v1 端点不支持 Microsoft 帐户(Hotmail、Outlook.com 等)。他们只支持 Office 365。 有没有办法让两种帐户类型(以及 EWS 和 ActiveSync)都使用单个 oauth 令牌?我们尝试使用 LiveConnect,但它仅适用于 MS 帐户。 不,没有办法。 EWS 范围未在 Azure 的 v2 端点上公开,这是唯一支持融合身份验证的端点(意味着工作和个人帐户都可以进行身份​​验证)。 好的。与 EWS 一起使用的个人帐户(hotmail)的 oauth 范围和端点是什么?

以上是关于通过 Exchange ActiveSync (EAS) 为 Office365 使用 OAuth2的主要内容,如果未能解决你的问题,请参考以下文章

注销 Exchange ActiveSync

Python Exchange ActiveSync 库

Exchange Web Service 与 Exchange ActiveSync(或者当您可以免费获得奶牛时,为啥还要购买牛奶?)

如何将 PC 桌面邮件客户端同步到 Exchange Activesync 服务器?

在 Exchange ActiveSync 客户端上实施配置

ActiveSync 库