Active Directory中的服务连接点(SCP)

Active Directory环境中,服务连接点(SCP)是一种非常有用的机制,它允许存储关于服务的连接信息。本文将介绍SCP的基本概念,以及如何使用C#语言在.NET框架下操作SCP。

SCP简介

服务连接点(SCP)是活动目录(Active Directory)中的一种对象,用于存储特定服务的信息,包括访问参数。通过Microsoft的AD Explorer工具,可以浏览这些对象,例如在域控制器的级别上。SCP可以存储如DNS服务名称和绑定选项等信息,并通过一个通用标识符(例如一个众所周知的GUID)进行访问。

编程实现SCP

要通过编程方式操作SCP,可以使用.NET框架中的System.DirectoryServices命名空间,它为原生COM对象提供了丰富的包装。以下是创建SCP的基本步骤:

首先,定义一个类SvcConnectionPoint,用于存储服务的所有信息,以及一个类SvcConnectionPointMgr,用于控制对AD对象的访问。创建一个简单的SCP,可以使用以下调用序列:

SvcConnectionPointMgr s = new SvcConnectionPointMgr(); SvcConnectionPoint scp = s.CreateConnectionPoint( "MyUniqueSCPId", "ADSComputerName", "Name of the SCP", "DNS Name (URL)", "Binding Options/Parameters" );

方法CreateConnectionPoint会在目标计算机的ADS对象下作为子对象添加一个连接点条目。以下是实现这一功能的代码示例:

DirectoryEntry scp_entry = null; // 打开现有的scp scp_entry = p.Children.Find(adsName); // 创建新的子记录 if (null == scp_entry) scp_entry = p.Children.Add(adsName, "serviceConnectionPoint"); // 构建scp对象 SvcConnectionPoint scp = new SvcConnectionPoint(scp_entry); // 填充值 scp.svcKeyword = keyword; scp.dnsName = dnsName; scp.svcBinding = bindingOptions;

对ADS对象的任何更改都需要通过调用CommitChanges方法来明确提交:

_scp.CommitChanges();

读取Active Directory中的服务连接点信息的过程与此类似。需要通过LDAP搜索具有特定唯一标识符的属性关键字的对象,并读取正确的属性。以下是实现这一功能的代码示例:

String ldapFilter = "(keywords=" + uuid + ")"; List props = new List(); props.Add("serviceDNSName"); props.Add("serviceBindingInformation"); DirectorySearcher search = null; if (start != null) search = new DirectorySearcher(start, ldapFilter); else search = new DirectorySearcher(ldapFilter); search.PropertiesToLoad.AddRange(props.ToArray()); SearchResultCollection src = search.FindAll(); if (src == null) return null;
沪ICP备2024098111号-1
上海秋旦网络科技中心:上海市奉贤区金大公路8218号1幢 联系电话:17898875485