2012-07-25 88 views
0

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

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

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

+0

它可能但不使用NTLM - 您必须使用允许中继凭据(并替换NTLM)的Kerberos,但只支持更新版本的活动目录。 Web应用程序必须是IIS(我不知道支持kerberos的代理信誉的apache/php模块)。另一种方法是在.Net/IIS中使用模拟(谷歌它)让你的服务伪装成一个用户 - 但它会要求他们输入他们的密码。当然,所有这些只在公司网络内工作 – Basic 2012-07-25 14:57:09

+0

谢谢,这对我来说很好。 – Alex 2012-07-26 12:40:16

回答

1

看起来我昨天有一个糟糕的一天,否则不知道为什么我无法弄清楚,因为它是如此简单!

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

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

+0

很高兴你解决了它,但我相信你会发现这实际上是Kerberos而不是NTLM--当涉及到在不同的网络上支持你的应用程序或者支持较老的(Win2K之前的)客户端时,差异是很重要的。 – Basic 2012-07-26 12:53:16

+0

哦,你也可以通过转到'about:config'并设置'network.automatic-ntlm-auth.trusted-uris'来使用NTLM/Kerberos,如[这里]所示[http://kb.mozillazine .ORG/Network.automatic-NTLM-auth.trusted-URI)来 – Basic 2012-07-26 12:55:17

相关问题