dedecms织梦内容管理系统  
 
首页 | 方舟产品 | 系统优化 | 硬件系统 | 软件系统 | 网络系统 | 无盘网络 | 软件下载 | 杀毒防黑 | 专题 | 会员中心 | 方舟论坛
  当前位置:方舟系统站>系统优化>win 2003优化>文章内容
通过.NET Framework访问活动目录(1)
来源: 作者: 发布时间:2007-05-10  



System.DirectoryServices使用户能够通过ASP.NET访问一些基本的用户管理功能。这篇文章首先回顾了活动目录(AD)的有关概念,然后简要地讨论了实际的System.DirectoryServices名字空间本身,最后给出了可供我们在实际应用程序中使用的代码。

活动目录是什么?

在目前的网络环境下,能够方便地控制对各个网络设备的访问是非常关健的。在控制谁在何时有访问何种设备的权限时,需要有一整套方法,这些设备包括打印机、文件以及其他的局域网或分布式网络资源。AD能够提供这些功能,由于与操作系统的整合非常紧密,这意味着AD能够在非常低的级别上提供支持。

AD的工作原理

单地说,AD就是一个内容为所有网络资源、分层次、面向对象的数据库。最顶层的对象一般是Organization (O),在该组织单元(OU)之下是容器,最后是包含实际资源的对象。这种分层次的格式为系统管理人员创建了一种熟悉和易于管理的“树”。例如,如果指定一个OU访问一个实际的资源,这一权限也将被赋予包含在其中的对象。

如何创建AD?

在.NET Framework中,微软为我们提供了System.DirectoryServices名字空间,它又使用了活动目录服务接口(ADSI)。

DSI是通过编程与许多不同的目录服务提供者交互的方式,也就是一种编程接口。

System.DirectoryServices空间中的类能够与如下所示的活动目录服务提供者配合使用:

表1.1 AD服务提供者

目录服务提供者 路径 Windows NT 5.0、Windows 2000或Windows XP WinNT://path Lightweight Directory Access Protocol (LDAP) LDAP://path Novell NetWare Directory Service NDS://path Novell Netware 3.x NWCOMPAT://path Internet Information Services (IIS) IIS://

在System.DirectoryServices名字空间内,有二个主要的类:System.DirectoryServices.DirectoryEntry和System.DirectoryServices.DirectorySearcher类。本篇文章不涉及这二个类的细节,需要注意的是,DirectorySearcher只能与LDAP提供者一起使用。

在使用DirectoryEntry对象时,每个对象都有一个模式。模型是对象条目的类型。例如,如果有一个User模式的DirectoryEntry对象,它就代表是一个用户。

在本篇文章中,我们使用了Windows 2000提供者(WinNT://)和System.DirectoryServices.DirectoryEntry类。

用户管理

在本篇文章的例子中,我们使用System.DirectoryServices名字空间创建一个数据访问层(DAL),执行一些非常基础的用户管理任务。DAL是对执行数据访问的真实的复杂性进行抽象的一种方法。例如,如果我们要编写一个访问Access数据库的DAL,就可以在对象中隐藏所有与ADO.NET有关的任务。当开发人员需要与数据库打交道时,只需要简单地使用这些对象,而无需关心特定的实现细节。开发者根本无需为ADO.NET操心,即使是以后决定升级到SQL Server,也只是需要改变DAL,使之适合新的数据库即可,其他的东西无需改变。

用户对象

我们建立的第一个对象用来表示任何给定用户的当前状态,该对象对User模式的DirectoryEntry类进行抽象。为了清楚起见,它看起来更象一个实际的User对象。

namespace DSHelper {
public class DSUser {
public DSUser(System.DirectoryServices.DirectoryEntry user) {
this.domainName=user.Path;
this.Username=user.Name;
this.Password=user.Password;
try {
this.FullName=Convert.ToString(user.Invoke("Get", new object[]
{"FullName"}));
this.Description=Convert.ToString(user.Invoke("Get", new object[]
{"Description"}));
this.PasswordExpired=Convert.ToInt32(user.Invoke("Get", new object[]
{"PasswordExpired"}));
this.RasPermissions=Convert.ToInt32(user.Invoke("Get", new object[]
{"RasPermissions"}));
this.MaxStorage=Convert.ToInt32(user.Invoke("Get", new object[]
{"MaxStorage"}));
this.PasswordAge=Convert.ToInt32(user.Invoke("Get", new object[]
{"PasswordAge"}));
this.HomeDirectory=Convert.ToString(user.Invoke("Get", new object[]
{"HomeDirectory"}));
this.LoginScript=Convert.ToString(user.Invoke("Get", new object[]
{"LoginScript"}));
this.HomeDirDrive=Convert.ToString(user.Invoke("Get", new object[]
{"HomeDirDrive"}));
this.userDirEntry=user;
}catch(Exception e) {
throw(new Exception("Could not load user from given DirectoryEntry"));
}
}
public DSUser(string Username, string Password, string DomainName) {
domainName=DomainName;
if(domainName=="" || domainName==null) domainName=Environment.MachineName;
username=Username;
password=Password;
}
private object groups=null;

共2页: 上一页 1 [2] 下一页
 
[收藏] [推荐] [评论(0条)] [返回顶部] [打印本页] [关闭窗口]  
用户名: 新注册) 密码: 匿名评论
评论内容:(不能超过250字,需审核后才会公布,请自觉遵守互联网相关政策法规。
 §最新评论:
  热点文章
·升级windows 2003 sp2时提示产品
·win 2003最新优化大全
·win2003设置受限用户有关机权限
·windows 2003 优化大全
·Windows 2003 Server提速优化
·Windows2003安全事件ID列表
·Windows 2003 服务器管理经验
·Delphi深度探索-活动目录开发
·windows 2003 简化
·windows 2003在线升级补丁
·设置win2003 自动登录
·突破IIS连接数限制,Windows 200
  相关文章
·Windows 2000用户管理--活动目录
·windows 2000中的活动目录
·Windows2003中对域控制器重命名
·windows 2003 简化
·Windows 2003 Server提速优化
·升级windows 2003 sp2时提示产品
·Windows Server 2003中文版
·安装Windows 2003企业版
·如何配置和管理WinXP/2003系统服
·Win2003中IE安全区域的设置技巧
·Windows Server 2003实用技巧
·windows 2003 优化大全
  主题推广
方舟网络 版权所有|关于本站|隐私保护|