2012-01-05 70 views
1

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

回答

5

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

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

如果你打算谈谈并使用在Windows上的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命名空间使得用AD和C#/ VB.NET中的用户和组玩耍变得非常容易!

0

参见:"LDAP: Programming Practices"的信息,编写代码的LDAP服务器的交互将是稳健的,绝缘和来自任何供应商特定的LDAP知识脱敏。编写具有特定实现知识的代码将导致代码变得脆弱难以维护,当服务器实现的某个方面发生变化时(例如服务器本身或服务器的配置或负载平衡器或任何其他类型),可能会遇到意外的结果与基础设施有关。

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

+0

感谢您的链接。不会使用LDAP符合跨平台解决方案,下划线数据源是Active Directory? – 2012-01-06 04:52:52