2010-11-02 66 views
3

我有一個使用NTLM身份驗證的Intranet的MVC應用程序,但我希望能夠允許外部用戶訪問應用程序。所有到我們內部網的外部連接都是通過NAT進行的,因此只有一個IP地址可以用來表示請求是否是外部的。我希望所有內部用戶像他們已經做的那樣接受NTLM身份驗證,但是任何來自外部IP的連接都會自動進行匿名身份驗證(「匿名」是任何潛在的默認用戶,例如標準網絡服務或IUSR_帳戶,指定的域用戶(嚴重鎖定其他目的當然)等)。結果是沒有人應該看到一個密碼請求,除非內部和瀏覽器默認使用NTLM。NTLM和自動匿名身份驗證IIS

我知道通常混合模式身份驗證最好是尷尬,但我想知道這個特定的用例是否可能有其他方式解決問題。一些我認爲可能性是:

  1. 截獲請求他們進入WindowsAuthenticationModule之前,無論是在IIS,在Global.asax中或一個HttpHandler的事件之一,使我們可以爲注入認證指定用戶。
  2. 在NAT中,有一種方法可以在指定用戶的HTTP請求中注入NTLM頭文件。
  3. 由於外部用戶通過不同的主機(DNS的末端處理符合他們的命名約定)來獲取它,因此IIS可以爲接受請求的簡單代理站點提供服務,並將請求轉發給主要網站使用指定用戶的NTLM,然後將響應發送回原始請求者。

回答

1

我使用您描述的請求攔截方法開發了一個網站。這是一個link的細節。