2010-04-09 81 views
10

是否可以使用此角色提供程序AspNetWindowsTokenRoleProvider與ASP.NET FORMS身份驗證(通過此MembershipProvider System.Web.Security.ActiveDirectoryMembershipProvider)?如何在使用Active Directory角色和身份驗證提供程序時提供ASP.NET Forms Authentication UX?

它似乎只適用於<authentication mode="Windows">,是否有可能與FORMS一起使用它?

background - 這裏的目標是提供一個ASP.NET Forms UX,同時使用Active Directory作爲後端身份驗證系統。如果有另一種使用內置技術的簡單方法,那很好,我也想聽聽。

更新

我應該說,我有認證工作,就是我用是增加的細粒度控制的水平(如角色)掙扎。

目前,我必須設置我的Active Directory連接以指向我的域中的特定OU,這將限制只訪問該OU中的用戶 - 我希望將我的Active Directory連接指向我的整個域,並限制基於組成員(也稱爲角色)的訪問,如果我使用Windows身份驗證,這將起作用 - 但我希望擁有這兩個世界的最佳,這是可能的,這是不可能寫我自己的RoleProvider?

+0

基於你的「背景」段落,它聽起來像這個教程是你所需要的: - http://msdn.microsoft.com/en-us/library/ms998360.aspx它被稱爲「如何:使用窗體身份驗證ASP.NET 2.0中的Active Directory「如果您使用的是更新版本,請不要擔心2.0元素 - 它只是表示所需的最低版本。 – rtpHarry 2010-04-15 09:50:14

回答

6

正如其他人所說的,您不能使用ActiveDirectoryMembershipProviderAspNetWindowsTokenRoleProvider。如果你想使用窗體身份驗證的ADMP,你有幾個選擇:

  1. 使用AuthorizationManager AzMan的又名。 AzMan內置於Windows 2003+中,可以與Active Directory組進行交互。另外,還有一個嵌入到.NET 2.0+中的AuthorizationStoreRoleProvider,您可以使用它來與之交互。 AzMan的工作任務,操作和角色,其中大概你的應用程序將被編碼,以執行特定的任務,然後可以分組到操作,然後你可以創建有權執行各種操作的角色。有一個管理應用程序在您安裝AzMan時可以安裝,您可以使用它來管理任務,操作和角色。然而,AzMan有一些缺點。首先,AuthorizationStoreRoleProvider不能識別任務。相反,它會將Roles列表與操作列表一起加載。因此,除非您創建提供程序的自定義版本,否則您的應用程序需要查找操作名稱而不是任務名稱。其次,在最底層的交互中,仍然可以通過COM來處理這個交互。除非您希望管理員必須使用AzMan工具,否則您需要編寫自己的頁面來管理角色中的操作,角色和成員資格。

  2. 使用SqlRoleProvider並將角色映射到用戶名。這個解決方案的優點是實現起來非常簡單。您幾乎可以使用它,因爲RoleProvider在用戶名上操作,而不是在UserId上操作。在您的代碼中,您只需檢查IsInRole以確定給定用戶是否已被放入代碼可識別的角色中。重要的缺點是它僅適用於用戶名而不適用於AD組,因此管理員無法使用AD工具來管理用戶。相反,你必須編寫一個管理控制檯來管理角色成員資格。另外,更改AD級別的用戶名需要更新應用程序的已知用戶名列表。

  3. 編寫(或定位)一個自定義的AD RoleProvider,用於尊重AD組。編寫一個自定義角色提供者並不是一件容易的事,但是這樣做可以讓管理員使用他們現有的AD工具管理角色成員資格。

0

是的,你是對的;它只能用於Windows窗體身份驗證。你可以在這裏確認: http://msdn.microsoft.com/en-us/library/system.web.security.windowstokenroleprovider.aspx

只是一個建議。使用AzMan(授權管理器)嘗試AuthorizationStoreRoleProvider。它爲我工作(很久以前,所以我不記得太多)。

+0

AzMan是否內置?或者它是一個新的/額外的下載/安裝?如果是這樣,在哪裏? – Nate 2010-04-14 04:36:20

+0

「授權管理器」隨Windows Server一起提供。只需將它的dll導入到你的項目中,你就可以走了。 :) – 2010-04-14 15:34:08

+0

檢查此URL:http://msdn.microsoft.com/en-us/library/ms998336.aspx 它解釋了自AzMan安裝以來的整個過程。 – 2010-04-14 15:35:57

相關問題