点滴积累,融会贯通
-----喜欢一切有兴趣的东西
博客园
::
首页
::
新随笔
::
联系
::
订阅
::
管理
::
268 随笔 :: 0 文章 :: 405 评论 :: 14 Trackbacks
活动目录.NET编程Tips [转载]
原文地址:
http://blog.joycode.com/liuhuimiao/articles/29964.aspx
为什么要有活动目录,什么是活动目录,它有什么用
:活动目录主要用在分布式的环境中。在分布式环境中,要求有各种信息可以被各种应用很方便地访问读取。活动目录正式为分布式环境中的信息提供一种访问途径。它提供了一个公共的区域来保存分布式环境中的各种信息,并且对这些信息进行定位。从开发人员角度看活动目录,可以理解活动目录是一种存放了应用程序所需要的特定资源信息的“数据库”。活动目录还对这些资源信息的读取和查询进行了优化。
容器和非容器
:活动目录中的资源信息被组织成一个层次结构。这个层次结构中的每一个实体都被简称为
对象
。换句话说,活动目录中创建对象时,是把它们创建在一个层次结构中的。该结构由两种类型的对象组成: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);
对于活动目录对象的绑定路径ADsPath,你可以用
LDAP://ServerName/DN
来绑定指定服务器和DN的活动目录对象。另外,DirectoryEntry还可以进一步指定用户名和密码,或者用户名和密码外加安全验证方式进行对象绑定。
DirectoryEntry的属性示意图
:
活动目录对象的属性分为
单值属性
和
多值属性
两类。例如上图中,CN就是单值属性,而memberOf则为多值属性。对于多值属性,可以用循环语句for或foreach进行列举。
DirectorySearcher目录查询
:DirectorySearcher实例有两个主要方法:FindAll()和FindOne()。FindAll()是获取该对象的所有子对象集合;而FindOne()则获取查询到的第一个子对象。对于DirectorySearcher实例,其也有SearchRoot、SearchScope、Filter三个主要属性。其中,SearchRoot表示在AD层次结构中要开始搜索的节点;SearchScope表示搜索范围;而Filter则表示LDAP查询语句的过滤命令字符串,例如 (&(objectCategory=person)(objectClass=user)) 表示列举所有用户对象中的人员对象。而对于搜索范围SearchScope,则又分为 Base、OneLevel、Subtree三种。其中,Base表示要那个搜索的根节点;OneLevel表示在同一个层次中搜索;Subtree则表示在包括根节点的所有节点的搜索。其示意图如下:
使用SQLServer查询分析器查询活动目录数据的实现方法
:为AD创建一个链接服务器(你可以在企业管理器的具体SQLServer服务器里的“安全性”里看到该项)。在查询分析器中执行下面命令即可:
sp_addlinkedserver 'ADSI', 'Active Directory Service Interfaces', 'ADSDSOObject', 'adsdatasource'
现在你就可以在查询分析器中查询AD数据了。例如下面查询语句:
SELECT * FROM OpenQuery(ADSI, 'SELECT title, displayName, sAMAccountName, givenName, telephoneNumber, facsimileTelephoneNumber, sn FROM ''LDAP://DC=mydomain,DC=local'' where objectClass = ''User''')
ADAM--活动目录应用程序模式
:ADAM,全称为Active Directory Application Mode,它是一个可运行在WinXP Professional和Win2k3上的目录服务,可简单的看作是AD的一个简化版本。但是,ADAM和AD是无法比较的,因为它们的侧重点和应用领域是不同的:AD是主要侧重网络基础构造,它是以系统服务运行,并需要配以DNS。而ADAM则主要是为应用程序服务的,它是以用户服务运行,且不需要DNS。同一台计算机上可以运行多个ADAM实例,例如可以为每个应用程序配置一个ADAM实例。你可以在
这里
下载到ADAM。
posted on 2007-05-10 16:29
小寒
阅读(350)
评论(0)
编辑
收藏
所属分类:
AD操作
社区
新闻
新用户注册
刷新评论列表
标题
姓名
主页
Email
(只有博主才能看到)
验证码
*
看不清,换一张
[
登录
][
注册
]
内容(请不要发表任何与政治相关的内容)
Remember Me?
登录
使用高级评论
新用户注册
返回页首
恢复上次提交
[使用Ctrl+Enter键可以直接提交]
相关文章:
.NET设计模式系列文章
ASP.NET AJAX入门系列
使用Visual Studio2005入门.Net2.0系列视频教程
prototype.js 1.4版开发者手册(强烈推荐)
【翻译】Scott Mitchell的ASP.NET2.0数据指南中文版索引
编译调试CSLA .NET Framework v1.5
相关链接:
所属分类的其他文章:
从Active Directory中获取用户信息 [转载]
活动目录.NET编程Tips [转载]
使用System.DirectoryServices.Protocols实现对AD的简单操作[转载]
ADHelper 活动目录用户操作类[转载]
最新IT新闻:
Google推出Android Market挑战App Store
美国年轻人最喜欢的15大网站
2008年8月30日IT博客精选
《极品飞车12》最新真人照片、游戏截图
IBM正在开发超强性能4TB固态硬盘阵列
博客园新闻频道
博客园首页
社区
<
2007年5月
>
日
一
二
三
四
五
六
29
30
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
1
2
3
4
5
6
7
8
9
公告
多多的学习,多多的积累, 虽然很多东西自己不知道, 但只要不停的学习别人的东西, 终将无所不知 MSN:liyuwang83113@163.com
搜索
留言簿
(13)
给我留言
查看留言
我参加的小组
ASP.NET
Web技术联盟
天津Net俱乐部
我参与的团队
天津.NET俱乐部(1/787)
企业内网开发集成应用(0/176)
Windows Vista开发(0/235)
软件项目管理团队(0/197)
.net企业应用开发(1/118)
随笔分类
AD操作(4)
(rss)
Ajax(6)
(rss)
ASP.NET编程&技巧(45)
(rss)
C#编程基础(42)
(rss)
C#网络编程(10)
(rss)
DataGrid&&GridView(15)
(rss)
EnterpriseLibrary(1)
(rss)
JavaScript专栏(23)
(rss)
ORM(3)
(rss)
SharePoint(11)
(rss)
Web打印(4)
(rss)
Windows/Webservice(3)
(rss)
韩语学习系列(4)
(rss)
软件工程专栏(24)
(rss)
设计模式学习(15)
(rss)
数据库设计UNION技巧(29)
(rss)
杂文-日记(32)
(rss)
.NET中重要技术
1-.Net设计模式(一)
梦幻Dot Net的博客
2-.Net设计模式(二)
Terrylee 的博客
3-ORM-NHibernate
张老三的博客
4-ORM-SPL
听棠.NET的博客
5-Enterprise Library
rickie的博客(企业类库)
6-自由、创新、研究、探索
一些开源的知识
7-海洋工作室
Sharepoint,SPS,Office
8-MagicAjax.NET
MagicAjax.NET
90-数据库操作
邹建的专栏
90-数据库应用
吕震宇的博客
91-quickstart
Microsoft quickstart
92-connectionstrings
Connection String
93-Enterprise Library
Terry的文章
94-C#手机推箱子
C#手机推箱子
95-sourceforge
开源源码下载
96-李战Blog
(rss)
李战Blog
97-Linq to sql
(rss)
Linq to sql
积分与排名
积分 - 183017
排名 - 177
阅读排行榜
1. NTLDR is missing 文件丢失如何解决(22798)
2. SQL Server 2000 函数使用---CAST 和 CONVERT(8514)
3. 项目管理-让什么人做什么事(3034)
4. B/S结构与C/S结构(转)(2655)
5. window.showModalDialog和window.open关闭子页面时刷新父页面(2525)
Powered by:
博客园
Copyright © 小寒