0

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

有没有办法通过我的 Web 应用程序链接客户端的浏览器和 IMAP 服务器,以便它们之间发生令牌交换,而我只是充当它们之间的网关。或者,有没有其他方法可以在不知道密码的情况下完成此任务?

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

4

1 回答 1

1

看来我昨天过得不好,否则不知道为什么我当时想不通,因为它是如此简单!

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

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

于 2012-07-26T12:48:02.967 回答