[英]Authenticating to multiple OUs in Active Directory
我正在使用具有以下配置的Active Directory成員資格提供程序:
<connectionStrings>
<add name="MyConnString" connectionString="LDAP://domaincontroller/OU=Product Users,DC=my,DC=domain,DC=com" />
</connectionStrings>
<membership defaultProvider="MyProvider">
<providers>
<clear />
<add name="MyProvider" connectionStringName="MyConnString"
connectionUsername="my.domain.com\service_account"
connectionPassword="biguglypassword"
type="System.Web.Security.ActiveDirectoryMembershipProvider, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
</providers>
</membership>
這完全有效,但它要求我的所有用戶都在“產品用戶”OU中,而我實際上希望將所有用戶組織到我們的“產品用戶”OU下的各種子OU中。 這可能嗎?
(請注意,這是對這個問題的部分重新發布,但我在這里問的問題從未在那里得到解答。)
針對AD的身份驗證是基於連接范圍完成的,因為我無法解決它。 基本上這意味着連接字符串上下文中的每個內容都被認為是......
如果你有你的連接:
LDAP:// domaincontroller / OU = Domain Users,DC = my,DC = domain,DC = com
然后,將對任何用戶進行身份驗證,該用戶是域的成員。
從那里你應該添加基於Windows令牌的角色提供程序並配置它像這樣......
<!-- use windows authentication -->
<authentication mode="Windows" />
<!-- use the Windows role provider -->
<roleManager enabled="true" defaultProvider="AspNetWindowsTokenRoleProvider" />
<!-- global authorization rules -->
<authorization>
<allow roles="Domain Admins, Product Users"/>
<deny users="*" />
</authorization>
這會鎖定應用程序,僅供OU“產品用戶”中的域管理員和用戶及其所有子項遞歸使用。
從那里你可以進一步“基於上下文”檢查其他功能,例如......
If(User.IsInRole("Product Admins"))
{
// do something groovy
}
else
throw new SecurityException();
這是什么意思 ...
這意味着您可以根據域用戶組成員身份對應用程序邏輯的安全性進行細粒度控制,如果用戶在您的域中,則會對其進行身份驗證,但可能無法對其進行授權(這取決於您的角色提供程序配置)。
驗證:識別用戶。
授權:授予用戶權限/訪問權限。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.