设为首页 加入收藏

TOP

活动目录.NET编程Tips
2014-11-23 22:55:21 】 浏览:355
Tags:活动 目录 .NET 编程 Tips

  为什么要有活动目录,什么是活动目录,它有什么用:活动目录主要用在分布式的环境中。在分布式环境中,要求有各种信息可以被各种应用很方便地访问读取。活动目录正式为分布式环境中的信息提供一种访问途径。它提供了一个公共的区域来保存分布式环境中的各种信息,并且对这些信息进行定位。从开发人员角度看活动目录,可以理解活动目录是一种存放了应用程序所需要的特定资源信息的“数据库”。活动目录还对这些资源信息的读取和查询进行了优化。


  容器和非容器:活动目录中的资源信息被组织成一个层次结构。这个层次结构中的每一个实体都被简称为对象。换句话说,活动目录中创建对象时,是把它们创建在一个层次结构中的。该结构由两种类型的对象组成:Container(容器)和非Container(非容器)。容器可容纳非容器或下一级的容器。而非容器则不再包含其他对象,因此也常被成为叶或叶子对象。在安装完活动目录后,操作系统已经默认自动创建了很多的Container,如Users, Builtin等。


  ADsPath、DN、RDN:在活动目录中层次结构的路径被称为ADsPath,可用来唯一标志一个对象(另外唯一标志对象的方法是使用GUID)。ADsPath常用的表示为:LDAP://DC=microsoft,DC=com。例如,有域被命名为mydomain.local,则它的ADsPath表示为:LDAP://DC=mydomain,DC=local。其中DC是Domain Component(域组件)的缩写,它只用于表示域的根。DN是Distinguished Name(唯一标识)的缩写,RDN是Relative Distinguished Name(相对唯一标识)的缩写。DN用来在一个完整的目录信息树中唯一表示一个对象的名称,而RDN是指在该对象的父容器中唯一表示它的名称。下面看个示例:在mydomain.local域中用户容器中超级管理员帐号的ADsPath为:LDAP://CN=Administrator,CN=Users,DC=mydomain,DC=local,其DN为(注意没有了LDAP:// 这个前缀):CN=Administrator,CN=Users,DC=mydomain,DC=local,其RDN为(即在Users容器中的名称):CN=Administrator。其中CN是Common Name(公用名称)的缩写。


  OU:OU是Organizational Unit(组织单元)的缩写。OU是容器对象,它主要从逻辑的角度来管理和组织活动目录域。例如,当你公司内部打算让销售部经理有权限管理自己整个销售部门资源信息时,一种方法就是为销售部门单独创建一个名为Sales的OU,然后让销售部经理在受限条件下实现其部门资源信息的“自治”。


  更多基础概念,可以参考这里 。


  关于LDAP及其语法,可以参考《理解LDAP》(上,下)。


  Naming Context:活动目录被分成许多部分,称之为分区或者Naming Context,简称NC。其中主要有三个部分:Domain NC,Configuration NC,Schema NC。这也就是你打开ADSIEDIT.msc时首先看到的已经加载的三个活动目录分区。Domain NC用于保存用户、组和组织单元的相关信息。Configuration NC用于保存整个域森林中的配置数据信息。而Schema NC负责保存与在活动目录中能够创建的所有的对象和属性集相关的数据。例如,在mydomain.local域中,Domain NC的ADsPath为:LDAP://DC=mydomain,DC=local。Configuration NC的ADsPath为:LDAP://CN=Configuration,DC=mydomain,DC=local。Schema NC的ADsPath为:LDAP://CN=Schema,CN=Configuration,DC=mydomain,DC=local。


  AD/ADAM程序访问接口示意图:



  System.DirectoryServices:System.DirecotryServices命名空间下有两个主要的类:DirectoryEntry和DirectorySearcher。其中DirectoryEntry类用于表示活动目录中任何一个对象。你可以通过DirectoryEntry对活动目录里的对象进行修改其属性、移动、重命名、列举其内部子对象、创建子对象、删除子对象、获取起父对象等等操作。例如:
using System.DirectoryServices;

DirectoryEntry entry = new DirectoryEntry(ADsPath);
Console.WriteLine(entry.Path);
Console.WriteLine(entry.Name);
Console.WriteLine(entry.GUID);


】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇在VisualC#中使用XML指南之读取XML 下一篇RawSocket编程实现网络封包监视

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目