2011-01-19 71 views
0

我在一個門戶網站上工作,並希望檢測用戶是否在我們的域中。我被告知最好的辦法是做一個反向DNS查找來檢查遠程主機以及用戶是否在我們的域上,然後使用他們的AD憑證登錄它們。反向DNS查找以檢查MVC 2中的遠程主機C#

我們要記錄在用戶如果他們在我們的域名:

首先,我們會做那麼IP範圍檢查反向DNS查找...

在我們使用另一個系統代碼在ASP頁

Dim oIIS 
Dim vEnableRevDNS 
Dim vDisableRevDNS 

vEnableRevDNS = 1 
vDisableRevDNS = 0 

Set oIIS = GetObject("IIS://localhost/w3svc/1/ROOT") 
oIIS.Put "EnableReverseDNS", vEnableRevDNS 
oIIS.SetInfo 
Set oIIS = Nothing 

有沒有辦法在MVC 2中做到這一點:C#?

澄清: 我仍然會使用Windows集成身份驗證 - 但是我希望該過程是無縫的...如果您是我們的網絡,您將自動登錄...如果您不是,您會轉發到登錄頁面

將會有內部網/外部網和公共用戶訪問 - 每個訪問都會有不同的登錄過程 - 我想單純使用反向DNS作爲指向入口點的機制。

感謝您的指點。

+0

反向DNS和ActiveDirectory用戶查找沒有任何共同之處。您想做什麼?你的投入是什麼?預期產出是多少?更詳細地描述你的情況。您如何在ASP.NET網站上驗證您的用戶? – 2011-01-19 10:37:28

+0

是的,如果確保用戶來自您的域名的最佳方式是通過讓他們登錄/認證? – spender 2011-01-19 10:45:53

回答

2

反向DNS不是 認證機制。

集成的Windows身份驗證是一個IIS/ASP.NET選項。 打開它,瀏覽器和IIS處理剩下的事情。用戶到達您的應用程序驗證。 (請確保您已關閉匿名訪問)

編輯:DNS根本不是身份驗證機制。無論你寫了什麼技術規範,都應該閱讀Windows集成身份驗證(NTLM/Kerberos)實際工作方式。

完全可以說,它不依賴於分配給您的機器的DNS條目。

編輯2:

對於Windows集成身份驗證是無縫的,你需要三樣東西在客戶機上:

  • 使用支持NTLM/Kerberos的驗證器(Internet Explorer瀏覽器,並與正確的設置:Firefox)
  • 使用屬於該Active Directory域的計算機(這可能也適用於其他可信的AD域)
  • 登錄到AD域帳戶。

用這個,你會自動登錄。沒有提示,你只是在那裏。

如果無法滿足這些要求,那麼在Internet Explorer和Firefox中,您將收到標準密碼提示(不在您的應用程序中,只是標準瀏覽器)。 您沒有顯示友好錯誤消息的選項,因爲這是在您的應用程序上下文之外處理的。

如果用戶使用的瀏覽器不支持NTLM/Kerberos,您可能會收到無盡的身份驗證提示 - 或者瀏覽器將顯示'訪問被拒絕'頁面。