0

我已經在Server Fault上發佈了此信息,但由於它的編程方面有點類似,所以我也會在此處發佈它。使用Windows驗證的IIS7中的表單身份驗證鎖定站點

我有一個使用窗體身份驗證的ASP.NET MVC 1.0應用程序。我們正在使用Windows Server 2008.我需要鎖定網站,以便只有特定用戶(在AD組中)才能訪問該網站。不幸的是,當我設置網站不允許匿名用戶使用Windows身份驗證時,由於網站和IIS的集成,它將用戶顯示爲他們的域帳戶登錄,而不是允許他們通過窗體登錄驗證。

所以,我需要一個混合模式認證。我需要該網站只能通過Windows身份驗證訪問,而無需匿名用戶,但是一旦進入,它只需使用表單身份驗證。我該如何去做正確的方式?

編輯:

這是一個澄清。該網站必須這樣工作。

  1. 您轉到該URL並彈出一個Windows身份驗證登錄名。您使用有權訪問的域名帳戶登錄。如果您沒有訪問權限,則會顯示401錯誤。
  2. 如果您有權限訪問,則可以訪問該網站。但是,該網站不使用您的Windows身份驗證用戶名。它使用表單身份驗證。所以,你必須使用表單認證感嘆網站。

問題是,當我將它設置爲執行第1步時,它將在第2步中使用您的Windows用戶名。我不希望它這樣做。

回答

2

這裏的訣竅是將您的身份驗證提供程序更改爲使用Active Directory,而不是將設置更改爲Windows。

或者,使用版本以下提供商:

<add 
name="AdProvider" 
type="System.Web.Security.ActiveDirectoryMembershipProvider, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" 
connectionStringName="YourAd" 
applicationName="YourApp" 
enablePasswordReset="false" 
    /> 

隨着版本以下連接字符串:

<add name="YourAd" 
connectionString="LDAP://[your DC]/OU=[your OU],DC=[your domain],DC=[your extension]" 
/> 

授權明智的,你有一些選擇。如果它基於域組,那麼您需要將azman連接起來。如果它是應用程序控制的,則需要將AD用戶與數據庫存儲的角色對齊。

PS:我吮吸LDAP連接字符串,你可能比我做的更多。


好吧,好像我回答了錯誤的問題。爲了後代的緣故,我會留下來,但是您應該嘗試禁用該網站的匿名身份驗證。

+0

該網站使用窗體身份驗證,而且它不能改變。在IIS6中,您曾經能夠保護網站訪問Windows身份驗證,然後在實際代碼中使用表單身份驗證。我需要這樣做。 – Josh 2009-11-02 17:14:26

+0

編輯答案來回答禮儀問題。往上看。 – 2009-11-02 17:37:44

相關問題