使用加密密码连接到Gmail(使用imap和javamail)

问题描述:

我试图用一个简单的java程序(如http://tinyurl.com/y4hfl8l中的这个)连接到Gmail。但我的问题是:使用加密密码连接到Gmail(使用imap和javamail)

有没有办法做到这一点与加密的密码,而不是真正的密码,当然是出于安全原因!就像我们在java-Oracle数据库中所做的一样?

默认情况下,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'表示它不是标准化的。)Google已经发布了a document defining the XOAUTH SASL mechanism。他们还提供了google-mail-xoauth-tools package,其中包括示例代码,演示如何通过XOAUTH将Gmail与Gmail一起使用。

+0

我们刚刚转向使用XOAUTH,它一直运行良好。 – GreenKiwi 2012-01-19 20:31:17

+0

尽管在代码中或属性文件中,您仍然必须以纯文本形式编写密码。 – Adam 2014-09-16 14:26:17