在IMAP邮件服务器上的web应用程序中通过NTLM身份验证


Pass-through NTLM authentication in a web app on an IMAP mail server

我需要在web应用程序中针对IMAP邮件服务器使用NTLM身份验证。web应用程序本身中的身份验证也是NTLM。因此,用户打开web应用程序界面,web服务器端通过NTLM在邮件服务器上获取该用户的收件箱。如果我从不存储(也无法访问)用户的密码,这可能吗?

有没有什么方法可以通过我的网络应用程序将客户端的浏览器和IMAP服务器链接起来,这样它们之间就可以进行代币交换,而我只是充当它们之间的网关。或者,有没有其他方法可以在不知道密码的情况下完成这项任务?

web应用程序可以是asp.net/iis或php/apache。任何一个选项都适用于我。

看起来我昨天过得很糟糕,否则我不知道为什么我不能弄清楚,因为这太简单了!

如果启用了Windows身份验证,则web应用程序已经获取访问该应用程序的交互式用户的上下文。然后,我可以通过集成的Windows身份验证对启用NTLM的IMAP服务器进行身份验证,就像在桌面应用程序中一样。

也就是说,他们的关键点是,在网络应用程序中不需要以某种方式将NTLM令牌从浏览器传递到IMAP服务器。这只是一个分为两个阶段的过程:-首先,浏览器(在交互式用户下运行)通过winapi函数创建NTLM令牌,并将其发送到web应用程序,以便应用程序最终获取该交互式用户上下文-然后,在交互式用户上下文下运行的web应用程序通过相同的winapi函数创建一个新的令牌,并将其发送到IMAP服务器。