【问题标题】:How can I get PLAIN authentication working with Google's IMAP server?如何使用 Google 的 IMAP 服务器获得 PLAIN 身份验证?
【发布时间】:2015-05-01 00:01:35
【问题描述】:

所以一段时间以来,我一直依靠 PLAIN 支持在我的电子邮件客户端中登录 Google 的 IMAP 服务器。最近他们开始阻止它并返回错误(尽管将其列为受支持的身份验证方法)。

举个例子:

Connected to 'imap.gmail.com:993' using SSL
A0001 CAPABILITY
* OK Gimap ready for requests from ##.##.##.## cd6mb38777249ieb
* CAPABILITY IMAP4rev1 UNSELECT IDLE NAMESPACE QUOTA ID XLIST CHILDREN X-GM-EXT-1 XYZZY SASL-IR AUTH=XOAUTH2 AUTH=PLAIN AUTH=PLAIN-CLIENTTOKEN AUTH=XOAUTH
A0001 OK Thats all she wrote! cd6mb38777249ieb
A0002 AUTHENTICATE PLAIN
+
####################################
* NO [WEBALERT https://accounts.google.com/ContinueSignIn?sarp=1&scc=1&plt=AKgnsbszktZSU6iVmh...snip....] Web login required.
A0002 NO [ALERT] Please log in via your web browser: http://support.google.com/mail/accounts/bin/answer.py?answer=78754 (Failure)
SSL connection closed.
ScribeImap_Thread.cpp:647 - Connect to imap.gmail.com:993 failed.

我尝试在浏览器中打开“https://accounts.google.com/ContinueSignIn...”网址:

我被重定向到https://myaccount.google.com/,但下一次登录尝试也失败了。所以它似乎根本没有改变身份验证。

PLAIN 身份验证是完全被阻止还是我做错了?

或者是否有一种有效的身份验证方法并且不需要浏览器组件来登录? (XOAUTH2 似乎也需要网络登录)

【问题讨论】:

  • 您必须为您的帐户启用安全性较低的登录,或转换为使用 OAUTH2,或切换到两因素身份验证并生成应用专用密码。
  • @Max 那么WEBALERT URL 的用途是什么?为什么还要把它放在那里? (我也在追求OAUTH2)
  • 我不确定。 Google 经常更改他们的安全参数,但并不总是很清楚他们想要做什么。
  • 如果您在网络上登录,Google 有更好的区分帐户所有者和恶意者的能力。通过 IMAP 他们只知道你的 IP 地址,如果他们强迫你通过网络登录绕道,他们还会知道你是否有你常用的 cookie、你常用的操作系统等。

标签: authentication imap


【解决方案1】:

很正式:
http://googledevelopers.blogspot.com.au/2015/04/a-final-farewell-to-clientlogin-oauth.html

他们已经完全关闭了 PLAIN 登录并且它没有回来。

所以有两种选择:

  1. 开启"less secure apps"
  2. 实施 OAUTH2。

我决定实现 OAUTH2 支持(实际上离工作不远了)。最初我认为我的应用程序中需要一个嵌入式浏览器组件,但事实证明我可以启动系统浏览器并且用户可以通过一些手动过程复制令牌。

有趣的是,对于那些在他们的软件中支持 OAUTH2 的人来说,Google 已经设置了一个游乐场来查看实践中的整个过程:
https://developers.google.com/oauthplayground/

【讨论】:

  • 几个小时前,我的 OAUTH2 几乎没有工作。但是,对于我支持的每项服务,我似乎需要提供大量的服务器特定信息。各种客户端 ID、范围、令牌 URI 等。并且无法发现有关新服务的信息。
  • PLAIN 登录没有完全关闭。 Gmail 继续支持使用用户名和密码登录以及 AUTHENTICATE PLAIN(也使用密码)。只是欺诈/劫持检测对这些机制更加敏感,可以触发补充的 Web 登录消息。打开“不太安全的应用程序”或者更好的是使用 OAuth2 的建议很好。
【解决方案2】:

我看到这是一篇旧帖子,但在与 Outlook 斗争了一年多才得到我的邮件后,我终于让它再次工作了。

我要做的第一件事是登录我的 Gmail 帐户并关闭标有“不太安全的应用程序”的按钮,因为 Outlook 属于该类别。 转到“我的帐户”中的“不太安全的应用程序”部分。 在“访问安全性较低的应用”旁边,选择打开。 (Google Apps 用户注意:如果您的管理员锁定了不太安全的应用帐户访问权限,则此设置会隐藏。) 如果你有两步验证(就像我做的那样),它仍然会让 Outlook 失败。所以接下来你要做的就是创建一个应用密码,它会为你生成一个密码,然后你在 Outlook 中使用它来正确同步。

访问您的应用密码页面。您可能会被要求登录您的 Google 帐户。 在底部,单击选择应用程序并选择您正在使用的应用程序。 单击选择设备并选择您正在使用的设备。 由于不会列出 Outlook,请选择其他并键入 Outlook 以供将来参考。 选择生成。 按照说明在您的设备上输入应用程序密码(黄色栏中的 16 个字符代码)。 选择完成。 复制生成的密码。 打开 Outlook 并将密码粘贴到密码部分。不要使用您的常规密码。 您的邮件将同步而不会出现任何问题。 (希望) 完成后,您将不会再看到该应用程序密码代码。但是,您会看到您已为其创建应用密码的应用和设备的列表。

我希望这对遇到问题的每个人都有帮助。我希望这些方向很容易遵循!大家好运! :-)

【讨论】:

  • 这里不适合放置您的答案。我的问题与编写连接到 gmail 的软件有关。也许 serverfault.com 更适合您的工作?
猜你喜欢
  • 2015-03-31
  • 1970-01-01
  • 1970-01-01
  • 2020-04-22
  • 1970-01-01
  • 2017-09-14
  • 2019-07-23
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多