我正在尝试使用一个简单的java程序连接到gmail(像这个 https://harikrishnan83.wordpress.com/2009/01/24/access-gmail-with-imap-using-java-mail-api/)。但我的问题是:
有没有办法使用加密密码而不是真实密码来做到这一点,当然是出于安全原因!就像我们在 java-Oracle db 中所做的那样?
默认情况下,IMAP 的唯一身份验证机制是the LOGIN command https://www.rfc-editor.org/rfc/rfc3501#section-6.2.3,它需要未加密的用户名和密码。您可以通过 IMAP 连接或通过启动 TLS 层在其上添加加密层STARTTLS
命令,但它仍然要求客户端知道明文密码。
服务器还可以选择提供可通过以下方式调用的 SASL 身份验证方法the AUTHENTICATE command https://www.rfc-editor.org/rfc/rfc3501#section-6.2.2。服务器在响应中通告它支持哪些 SASL 机制CAPABILITY
命令。例如,如果服务器包含以下功能“AUTH=PLAIN
“,客户端可以使用PLAIN
SASL 身份验证方法通过AUTHENTICATE PLAIN
IMAP 命令。
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 已发布定义的文件XOAUTHSASL机制 http://code.google.com/apis/gmail/oauth/protocol.html。他们还提供了一个google-mail-xoauth-tools 包 http://code.google.com/p/google-mail-xoauth-tools/wiki/JavaSampleCode,其中包括示例代码,展示如何通过 Gmail 使用 JavaMailXOAUTH
.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)