有没有人在C#和asp.net中看到过用于active directory (主要是与用户相关的东西)的实体库?我是更好的整合与asp会员或建立一些定制的东西。
我看了一下LINQtoAD,但它似乎不再活跃了。
发布于 2010-02-17 09:36:14
System.DirectoryServices程序集和命名空间是否不足?
发布于 2010-02-17 14:08:54
如果你使用的是.NET 3.5,也可以查看System.DirectoryServices.AccountManagement,在处理用户、组、计算机等主体时,它的界面要简单得多。
请查看这篇MSDN文章,它是对S.DS.AD的一个很好的介绍:
Managing Directory Security Principals in the .NET Framework 3.5
干杯!
发布于 2013-10-31 12:21:19
你可以参考我的基于ActiveRecord模式的开源项目如下(因为它是开源的,你可以了解如何使用DirectoryEntry操作AD,DirectoryEntry不仅支持LDAP协议,还支持IIS,WIN等,所以我开发了这个库):
例如:更新用户AD对象。
using (var userObject = UserObject.FindOneByCN(this.ADOperator, “pangxiaoliang”))
{
if(userObject.Email == "example@landpy.com")
{
userObject.Email = "mv@live.cn";
userObject.Save();
}
}例如:查询用户AD对象。
// 1. CN end with "liu", Mail conatains "live" (Eg: mv@live.cn), job title is "Dev" and AD object type is user.
// 2. CN start with "pang", Mail conatains "live" (Eg: mv@live.cn), job title is "Dev" and AD object type is user.
IFilter filter =
new And(
new IsUser(),
new Contains(PersonAttributeNames.Mail, "live"),
new Is(PersonAttributeNames.Title, "Dev"),
new Or(
new StartWith(AttributeNames.CN, "pang"),
new EndWith(AttributeNames.CN, "liu")
)
);
// Output the user object display name.
foreach (var userObject in UserObject.FindAll(this.ADOperator, filter))
{
using (userObject)
{
Console.WriteLine(userObject.DisplayName);
}
}例如:自定义查询。
IFilter filter =
new And(
new IsUser(),
new Custom("(!userAccountControl:1.2.840.113556.1.4.803:=2)")
);
// Output the user object display name.
foreach (var userObject in UserObject.FindAll(this.ADOperator, filter))
{
using (userObject)
{
Console.WriteLine(userObject.DisplayName);
}
}你会发现用它操作广告很容易,如果你对它没有兴趣,请忽略我的回答。有关AD的任何问题,请联系我:)
https://stackoverflow.com/questions/2277748
复制相似问题