【问题标题】:IMAP auth in Office 365 using OAuth2Office 365 中使用 OAuth2 的 IMAP 身份验证
【发布时间】:2015-06-27 03:42:21
【问题描述】:

我在我的程序中使用 IMAP 客户端。我正在尝试使用 OAuth2 机制(使用 these instructions)通过 IMAP 客户端访问 Office 365 Outlook。

当我在 IMAP 客户端中进行身份验证时 - 身份验证失败,但 Google 和 Outlook.com 的 OAuth2 身份验证工作正常。 Office 365 是否支持 IMAP 中的 OAuth2 身份验证?如果是,如何认证?

【问题讨论】:

    标签: c# oauth-2.0 imap office365


    【解决方案1】:

    我们正在积极致力于为与 O365 邮箱的 IMAP 连接提供 OAuth 支持。一旦有相同的内容,我们将发布公告。

    【讨论】:

    • 我们的组织确实需要这个。你能给出任何粗略的时间表吗?或者有我们可以加入的测试计划吗?
    • 是否可以提供将 OAuth 支持添加到 IMAP 的时间线。对于一个用例,我们使用基本身份验证。我们希望尽快迁移到 OAuth,因为基本身份验证支持将于 2020 年 10 月移除
    • 能否提供此功能的时间线。
    • @Sivaprakash-MSFT 关于 IMAP 的 OAuth 支持的任何更新
    • 这篇博文:techcommunity.microsoft.com/t5/exchange-team-blog/… 告诉 IMAP 应该支持 OAuth,这就是您启用它的方式:docs.microsoft.com/en-us/exchange/… 我这样做了,但是,Thunderbird 仍然说“IMAP 服务器 Outlook.office365. com 不支持所选的身份验证方法”。所以我不确定这是否应该工作。
    【解决方案2】:

    随着OAuth 2.0 support for IMAP 的新推出,我可以使用范围生成令牌

    https://outlook.office365.com/IMAP.AccessAsUser.All

    但我还是得到了

    A1 NO AUTHENTICATE 失败

    我正在使用以下属性:

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

    编辑:现在可以使用了!

    【讨论】:

    • 按照对我有用的说明进行操作。我尝试使用“imap”而不是“imap”您可以尝试使用“imap”,即连接到端口 993。您还可以尝试添加以下道具。 props.put("mail.debug", "true") 和 props.put("mail.debug.auth", "true") 。检查正在使用什么 AUTH 机制进行连接。
    • @bala 感谢您的建议,但仍然出现错误。显示“A1 NO LOGIN 失败”。您使用的是什么 JavaMail 版本?
    • 这里一样,无法连接。 @bala,您介意在这里检查我的问题吗,那里有什么问题? - stackoverflow.com/q/61597263/1126831
    • 能否通过微软管理中心检查用户邮箱是否启用了 IMAP 访问?
    • 它正在使用 imaps 和正确的 javamail 版本。谢谢大家!
    【解决方案3】:

    我得到了这个工作,正如我在这里描述的那样:Connect to outlook Office 365 IMAP using OAUTH2

    Azure AD 中的应用程序权限已移至与上述 cmets 中的屏幕截图不同的 Graph API 部分。 Azure AD 显示的 Scope 也不适合我,我不得不使用 https://outlook.office365.com/IMAP.AccessAsUser

    【讨论】:

    • 你是如何使用https://outlook.office365.com/IMAP.AccessAsUser的?由于此 App-Permission 无法添加到 App Registrations。如果我只是尝试获取具有此范围的令牌,我会得到:The application 'XY' asked for scope 'IMAP.AccessAsUser' that doesn't exist on the resource [...]
    • 我在应用注册中添加了https://graph.microsoft.com/IMAP.AccessAsUser.All。出于某种原因,这似乎有效,但没有任何意义。
    【解决方案4】:

    我们不支持通过 OAuth 对 Office 365 进行 IMAP 访问,我们也没有计划这样做,因为我们建议使用我们的 REST API 为您的应用连接到 Office 365。 Office 365 REST APIs for mail, calendar and contacts 和我们较旧的 SOAP API Exchange Web Services 支持 OAuth。

    【讨论】:

    • 好的。谢谢你的回答。您有计划在不久的将来支持它吗?
    • @VenkatAyyadevara-MSFT 当我连接到 outlook.office365.com IMAP 端点并执行 CAPABILITY 命令时,其中一项功能是 AUTH=OAUTH2。因此,无论是否支持,因为服务器响应和您对问题的回答有点令人困惑。
    • 所以 imap://outlook.office365.com 报告在其能力响应中支持 OAUTH2(错误?)并且 AUTHENTICATE PLAIN 也被破坏(正确密码被 2FA 拒绝)。搞笑的家伙....只是搞笑。
    • 在上述评论的基础上,techcommunity.microsoft.com/t5/Exchange-Team-Blog/… 建议微软现在推荐使用 Oauth2。也许来自 MS 的人可以更新他们的答案?
    • 这应该被取消选中作为答案,因为这与@Sivaprakash-MSFT 下面提供的最新信息直接矛盾
    猜你喜欢
    • 2022-10-04
    • 2016-12-07
    • 1970-01-01
    • 2020-08-19
    • 1970-01-01
    • 1970-01-01
    • 2023-02-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多