2010-05-28 67 views
3

我使用的是以下配置的Active Directory的成员资格提供:认证到多个OU在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中时。这可能吗?

(请注意,这是this question部分转贴,但我要问这里的问题是永远不会有解答了。)对AD

+0

这不能回答你的问题,但你有没有考虑以编程方式做这个? – 2010-06-08 21:28:47

+0

@Rising Star:您的意思是创建N个不同的LDAP连接字符串并循环遍历其中的每一个来验证用户?这听起来/感觉是一个糟糕的主意。但是,不,我没有尝试过。 – Jaxidian 2010-06-09 16:08:52

+0

有趣。我没有尝试,但MSDN http://msdn.microsoft.com/en-us/library/system.web.security.activedirectorymembershipprovider.aspx表示它应该包括OU下的所有用户。 – 2011-01-28 06:49:15

回答

1

验证是基于连接的范围,因为我undetstand完成它。 从本质上讲这是什么意思的是,在连接字符串的范围内everyhting被认为是...

,如果你有作为连接:

LDAP://网域控制器/ OU =域用户,DC =我, 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(); 

这是什么意思?

这意味着你有你的应用程序逻辑的基于域用户组成员安全的细粒度控制,如果用户在您的域名这将验证它们,但它可能不授权他们(这就是你的角色提供者配置)。

身份验证:识别用户。

授权:授予用户权限/访问权限。

+0

“任何用户将被认证为域的成员” - 这是不正确的。这只会验证“域用户”OU中的用户。 – Jaxidian 2011-09-23 15:58:34

+0

我认为所有的用户都被考虑过,但是只有连接范围的孩子才能被“检查”/用于评估会员资格的规则中(我认为......自从我这样做以来一直是个妓女)......大多数人只需连接到他们的目录服务器LDAP目录的根目录以避免混淆 – War 2011-10-14 12:24:29

+0

使用我上面建议的方法将拒绝所有接受所有用户的访问,接受域管理员和产品用户角色中的所有用户,其他人将被“认证”但不是“授权“使用该应用程序。 – War 2011-10-14 12:27:47

相关问题