2009-09-13 179 views
1

我正在使用VSTS 2008 + C#+ .Net 3.5 + IIS 7.0 + ASP.Net。我有兩個IIS網站,站點A和站點B.當用戶請求url http://sitea/abc.aspx時,我的ASP.Net代碼處理程序將驗證用戶(使用Forms身份驗證),並且如果通過身份驗證,我將把用戶重定向到http://siteb/bcd.aspxIIS http請求身份驗證問題

我目前的問題是,有些用戶會直接訪問http://siteb/bcd.aspx來跳過sitea的認證過程。這不是我想要的,因爲我想確保所有訪問http://siteb/bcd.aspx的用戶都已通過身份驗證。

我的問題是,什麼是簡單的解決方案來解決這個問題,當用戶直接訪問siteb跳過驗證?

回答

1

我對這個問題的想法...

  • 禁止匿名訪問這兩個網站
  • 由於您使用窗體身份驗證設置適當的loginurl。
  • 如果用戶直接訪問http://sitseb/bcd.aspx,由於匿名訪問被禁止,它將被重定向到相應的登錄URL。

如果您需要進一步的說明,請告訴我。

類似的解決方案在這裏提出..

Multiple site authentication with asp.net

注意:如果需要的話,窗體身份驗證Cookie域應設置爲「* .yourdomain.com」,使相同的cookie可以用於這兩個網站。

+0

謝謝Rajesh,我認爲你的解決方案有效。我說我正在使用Forms身份驗證,更確切地說,我使用Forms身份驗證而不是siteb,抱歉我的問題描述不正確。 :-) siteb是一個遺留系統,我希望儘可能保持代碼更改。我不確定在siteb上使用Forms身份驗證是否會涉及太多的代碼更改? – George2 2009-09-13 15:23:43

+1

「siteb」使用什麼樣的身份驗證? – 2009-09-13 15:28:22

+0

目前,siteb尚未使用身份驗證。匿名訪問。 – George2 2009-09-13 15:35:10

1

在siteb上,您可以限制訪問sitea的ip地址。

在IIS管理器

單擊目錄安全性或文件安全性選項卡,然後執行下列操作之一:

在IP地址和域名限制部分

,單擊編輯。

單擊授予訪問權限或拒絕訪問權限。當您選擇「拒絕訪問」時,您拒絕訪問所有計算機和域,除非您專門授予訪問權限。當您選擇「授予訪問權限」時,您授予對所有計算機和域的訪問權限,但那些您明確拒絕訪問的權限除外。

單擊添加,然後單擊單個計算機。

單擊「DNS查找」按名稱搜索計算機或域,而不是按IP地址搜索。

鍵入計算機的DNS名稱。 IIS在當前域上搜索該計算機,如果找到,則在IP地址框中輸入其IP地址。

+1

嗨,彼得,我認爲你的解決方案不適合我。由於當一個正常的用戶訪問sitea進行身份驗證時,我會將用戶重定向到siteb。我認爲IP地址應該是客戶端(最終用戶)的計算機地址,而不是站點地址。因此,限制siteb地址只允許sitea訪問的解決方案不起作用。如果我錯了,請糾正我。謝謝! – George2 2009-09-13 15:26:00

+1

這將如何工作,但隨後對siteB的請求?通過身份驗證的第一個請求將作爲重定向來自siteA,但後續請求將來自客戶端的IP,不是嗎? – eidylon 2009-09-13 15:27:59

+0

嗨,彼得,場景是,步驟1:用戶訪問sitea的內容列表,步驟2:用戶被要求通過sitea認證,步驟3:用戶通過sitea認證,sitea將用戶重定向到siteb,步驟4:用戶訪問siteb從重定向。所以,我認爲當用戶通過身份驗證並訪問siteb時,用戶應該使用客戶端計算機的IP地址,而不是sitea的地址,對嗎? – George2 2009-09-13 15:37:13