2012-07-25 59 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

相關問題