我有一个已经构建并运行的auth层的应用程序。我想在这个应用程序中添加一个小的imap客户端,但不知道如何处理imap auth。我总是构建auth系统来密码/哈希密码,然后立即销毁任何明文密码的痕迹......所以,我从未有过处理我需要维护的密码的经验。
我希望用户能够从应用程序内(或初次登录时)登录到imap,并在使用应用程序的其他功能时保持该登录。
任何提示都会很棒......谢谢。
答案 0 :(得分:4)
有关信息,我查看了圆形立方体代码然后......
Roundcube在会话中只是encrypt the password and stores it:
$_SESSION['user_id'] = $user->ID;
$_SESSION['username'] = $user->data['username'];
$_SESSION['storage_host'] = $host;
$_SESSION['storage_port'] = $port;
$_SESSION['storage_ssl'] = $ssl;
$_SESSION['password'] = $this->encrypt($pass);
$_SESSION['login_time'] = time();
$this->encrypt($pass)
是指使用MCrypt应用3DES加密的rcube::encrypt
然后它使用对称rcube::decrypt
方法when needed:
$host = $_SESSION['storage_host'];
$user = $_SESSION['username'];
$port = $_SESSION['storage_port'];
$ssl = $_SESSION['storage_ssl'];
$pass = $this->decrypt($_SESSION['password']);
顺便说一句,加密方法似乎使用了一个秘密盐(这里称为“crypto_key”)。
答案 1 :(得分:1)
不幸的是,IMAP协议要求您知道密码(共享密钥)以便能够对其进行身份验证。当您登录IMAP时,您可以直接使用它,也可以使用CRAM-MD5之类的东西。
但是,根据服务器的不同,您通常可以通过至少每30分钟发出一次NOOP来无限期地维护IMAP连接。但是,任何网络问题都需要您再次登录。