【问题标题】:Connect to gmail (using imap and javamail) with encrypted password使用加密密码连接到 gmail(使用 imap 和 javamail)
【发布时间】:2011-07-08 04:57:08
【问题描述】:

我正在尝试使用一个简单的 java 程序 (like this one) 连接到 gmail。但我的问题是:

出于安全原因,有没有办法使用加密密码而不是真实密码来做到这一点!类似于我们在 java-Oracle db 中的操作方式?

【问题讨论】:

    标签: email gmail imap jakarta-mail


    【解决方案1】:

    默认情况下,IMAP 的唯一身份验证机制是the LOGIN command,它采用未加密的用户名和密码。您可以通过 IMAP 连接或通过 STARTTLS 命令启动 TLS 层在其上添加加密层,但它仍然需要客户端知道明文密码。

    服务器还可以选择提供可通过the AUTHENTICATE command 调用的 SASL 身份验证方法。服务器在其对CAPABILITY 命令的响应中通告它支持的 SASL 机制。例如,如果服务器包含“AUTH=PLAIN”能力,则客户端可以通过AUTHENTICATE PLAIN IMAP 命令使用PLAIN SASL 身份验证方法。

    Gmail 仅支持一种 SASL 身份验证机制,XOAUTH

    C: 1 capability
    S: * CAPABILITY IMAP4rev1 UNSELECT IDLE NAMESPACE QUOTA XLIST CHILDREN XYZZY
          SASL-IR AUTH=XOAUTH
    S: 1 OK Thats all she wrote! dv32if2169247ibb.17
    

    XOAUTH 是一种使用 OAuth 的非标准 SASL 身份验证机制。 (前面的“X”表示它没有标准化。)谷歌发布了a document defining the XOAUTH SASL mechanism。他们还提供了google-mail-xoauth-tools package,其中包括示例代码,展示了如何通过XOAUTH 将JavaMail 与Gmail 一起使用。

    【讨论】:

    • 您仍然必须在某处以纯文本形式写入密码 - 无论是在代码中还是在属性文件中。
    猜你喜欢
    • 2017-09-10
    • 1970-01-01
    • 2015-11-20
    • 2013-09-11
    • 2020-04-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-29
    相关资源
    最近更新 更多