Active directory LDAP和Active Directory学习曲线

Active directory LDAP和Active Directory学习曲线,active-directory,ldap,Active Directory,Ldap,我们正在考虑将LDAP与Active Directory一起用于许多web应用程序的用户管理,而不是自定义关系数据库解决方案。做这件事时是否有很高的学习曲线,还是像1,2,3那样简单?LDAP与传统数据存储相比有点滑稽,也有点“不同”——因此肯定有学习曲线 最具挑战性的部分是“掌握”LDAP路径,以及如何构建和使用这些路径。另外:连接到LDAP的权限总是有点问题。如果您想开始搜索LDAP存储中的对象,那么LDAP筛选器相当复杂的语法也可能是一个挑战,让您绞尽脑汁:-) 如果您打算在Windows

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

LDAP与传统数据存储相比有点滑稽,也有点“不同”——因此肯定有学习曲线

最具挑战性的部分是“掌握”LDAP路径,以及如何构建和使用这些路径。另外:连接到LDAP的权限总是有点问题。如果您想开始搜索LDAP存储中的对象,那么LDAP筛选器相当复杂的语法也可能是一个挑战,让您绞尽脑汁:-)

如果您打算在Windows上与Active Directory对话并使用Active Directory,那么您肯定应该查看该网站,了解大量有用的信息

您没有提到您打算使用哪种语言/编程环境-如果您使用的是.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中与广告中的用户和组玩起来非常容易

LDAP与传统的数据存储相比有点滑稽,也有点“不同”——因此肯定会涉及到学习曲线

最具挑战性的部分是“掌握”LDAP路径,以及如何构建和使用这些路径。另外:连接到LDAP的权限总是有点问题。如果您想开始搜索LDAP存储中的对象,那么LDAP筛选器相当复杂的语法也可能是一个挑战,让您绞尽脑汁:-)

如果您打算在Windows上与Active Directory对话并使用Active Directory,那么您肯定应该查看该网站,了解大量有用的信息

您没有提到您打算使用哪种语言/编程环境-如果您使用的是.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中与广告中的用户和组玩起来非常容易

另请参见:有关为LDAP服务器交互编写代码的信息,该交互将是健壮的,与任何供应商特定的LDAP知识隔离且不敏感的。编写具有特定实现知识的代码将导致脆弱、难以维护的代码,当服务器实现的某个方面发生更改(例如服务器本身、服务器配置、负载平衡器或与基础架构相关的任何内容)时,这些代码可能会遇到意外的结果

尽可能避免编写特定于Microsoft的代码或创建特定于Microsoft的配置。严格遵守LDAP标准文档

另请参见:有关为LDAP服务器交互编写代码的信息,该交互将是健壮的,与任何供应商特定的LDAP知识隔离且不敏感的。编写具有特定实现知识的代码将导致脆弱、难以维护的代码,当服务器实现的某个方面发生更改(例如服务器本身、服务器配置、负载平衡器或与基础架构相关的任何内容)时,这些代码可能会遇到意外的结果


尽可能避免编写特定于Microsoft的代码或创建特定于Microsoft的配置。严格遵守LDAP标准文档

谢谢你的链接。使用LDAP不符合下划线数据源为Active Directory的跨平台解决方案吗?谢谢链接。使用LDAP不符合下划线数据源为Active Directory的跨平台解决方案吗?