LDAP和Active Directory学习曲线

时间:2012-01-05 21:47:59

标签: active-directory ldap

我们正在考虑将LDAP与Active Directory一起用于许多Web应用程序的用户管理,而不是自定义关系数据库解决方案。这样做是否有很高的学习曲线,或者1,2,3?

是否容易

2 个答案:

答案 0 :(得分:5)

LDAP比传统数据存储有点滑稽,有点“不同” - 所以肯定会涉及学习曲线。

最具挑战性的部分是在LDAP路径上获得“抓地力”以及如何构建它们并使用它们。另外:连接到LDAP的权限总是有点问题。如果你想开始在LDAP商店中搜索对象,那么相当棘手的LDAP过滤器语法也可能是一个挑战你的大脑: - )

如果您打算在Windows上与Active Directory进行对话并使用Active Directory,那么您一定要查看SelfADSI网站,其中包含大量有用的信息。

您没有提到您打算使用的语言/编程环境 - 如果您使用的是.NET 3.5或更高版本(C#,VB.NET),您应该查看System.DirectoryServices.AccountManagement(S.DS .AM)命名空间。在这里阅读所有相关内容:

基本上,您可以定义域上下文并轻松在AD中查找用户和/或组:

// set up domain context
PrincipalContext ctx = new PrincipalContext(ContextType.Domain);

// find a user
UserPrincipal user = UserPrincipal.FindByIdentity(ctx, "SomeUserName");

if(user != null)
{
   // do something here....     
}

// find the group in question
GroupPrincipal group = GroupPrincipal.FindByIdentity(ctx, "YourGroupNameHere");

// if found....
if (group != null)
{
   // iterate over members
   foreach (Principal p in group.GetMembers())
   {
      Console.WriteLine("{0}: {1}", p.StructuralObjectClass, p.DisplayName);
      // do whatever you need to do to those members
   }
}

新的S.DS.AM命名空间使得在C#/ VB.NET中使用AD中的用户和组非常容易!

答案 1 :(得分:0)

另请参阅:"LDAP: Programming Practices"有关为LDAP服务器交互编写代码的信息将是强大的,绝缘的,并且不受任何供应商特定LDAP知识的限制。编写具有特定实现知识的代码将导致脆弱,难以维护的代码,当服务器实现的某个方面发生更改时可能会遇到意外结果,例如服务器本身,或服务器的配置,或负载平衡器,或任何事情与基础设施有关。

尽可能避免编写Microsoft特定代码或创建Microsoft特定配置。坚持使用LDAP标准文件。