我試圖用一個簡單的java程序(如http://tinyurl.com/y4hfl8l中的這個)連接到Gmail。但我的問題是:使用加密密碼連接到Gmail(使用imap和javamail)
有沒有辦法做到這一點與加密的密碼,而不是真正的密碼,當然是出於安全原因!就像我們在java-Oracle數據庫中所做的一樣?
我試圖用一個簡單的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一起使用。
我們剛剛轉向使用XOAUTH,它一直運行良好。 – GreenKiwi 2012-01-19 20:31:17
儘管在代碼中或屬性文件中,您仍然必須以純文本形式編寫密碼。 – Adam 2014-09-16 14:26:17