ADS_AUTHENTICATION_ENUM枚举 (iads.h)

ADS_AUTHENTICATION_ENUM枚举指定 ADSI 中用于绑定到目录服务对象的身份验证选项。 调用 IADsOpenDSObjectADsOpenObject 以绑定到 ADSI 对象时,请提供至少一个选项。 通常,不同的提供程序将具有不同的实现。 此处所述的选项适用于 Microsoft 提供的提供程序,这些提供程序包含在 ADSI SDK 中。 有关详细信息,请参阅 ADSI 系统提供程序

语法

typedef enum __MIDL___MIDL_itf_ads_0000_0000_0018 {
  ADS_SECURE_AUTHENTICATION = 0x1,
  ADS_USE_ENCRYPTION = 0x2,
  ADS_USE_SSL = 0x2,
  ADS_READONLY_SERVER = 0x4,
  ADS_PROMPT_CREDENTIALS = 0x8,
  ADS_NO_AUTHENTICATION = 0x10,
  ADS_FAST_BIND = 0x20,
  ADS_USE_SIGNING = 0x40,
  ADS_USE_SEALING = 0x80,
  ADS_USE_DELEGATION = 0x100,
  ADS_SERVER_BIND = 0x200,
  ADS_NO_REFERRAL_CHASING = 0x400,
  ADS_AUTH_RESERVED = 0x80000000
} ADS_AUTHENTICATION_ENUM;

常量

 
ADS_SECURE_AUTHENTICATION
值: 0x1
请求安全身份验证。 设置此标志后,WinNT 提供程序使用 NT LAN Manager (NTLM)
对客户端进行身份验证。 Active Directory 将使用 Kerberos(可能为 NTLM)对客户端进行身份验证。 When
用户名和密码为 NULL,ADSI 使用安全性绑定到 对象
调用线程的上下文,即用户帐户的安全上下文,其下
应用程序正在运行或调用线程表示的客户端用户帐户。
ADS_USE_ENCRYPTION
值: 0x2
要求 ADSI 使用加密通过网络交换数据。

注意 WinNT 提供程序不支持此选项。

 
ADS_USE_SSL
值: 0x2
通道使用安全套接字层 (SSL) 进行加密。 Active Directory 要求证书
安装服务器以支持 SSL。

如果此标志未与 ADS_SECURE_AUTHENTICATION 标志和
提供的凭据为 NULL,绑定将以匿名方式执行。 如果此标志
ADS_SECURE_AUTHENTICATION 标志结合使用,并且提供的凭据为
NULL,则使用调用线程的凭据。

注意 WinNT 提供程序不支持此选项。

 
ADS_READONLY_SERVER
值: 0x4
不需要可写域控制器。 如果应用程序仅从 Active 读取或查询数据
目录,应使用此标志打开会话。 这允许应用程序利用
Read-Only DC (RODC) 。

在 Windows Server 2008 中,ADSI 尝试连接到 Read-Only DC (RODC) 或可写 DC。 此
允许使用 RODC 进行访问,并使应用程序能够在分支或外围网络中运行
(也称为外围网络、非军事区和屏蔽子网) ,无需与 直接连接
可写 DC。

有关 RODC 兼容性编程的详细信息,请参阅
只读域控制器应用程序兼容性指南
ADS_PROMPT_CREDENTIALS
值: 0x8
不支持此标志。
ADS_NO_AUTHENTICATION
值: 0x10
不请求身份验证。 提供程序可能会尝试将客户端作为匿名用户绑定到
目标对象。 WinNT 提供程序不支持此标志。 Active Directory 在两者之间建立连接
客户端和目标对象,但不会执行身份验证。 设置此标志相当于请求
一个匿名绑定,将所有用户指示为安全上下文。
ADS_FAST_BIND
值: 0x20
设置此标志后,ADSI 不会尝试查询 objectClass
属性,因此将仅公开所有 ADSI 对象支持的基本接口,而不是完整对象
支持。 用户可以使用此选项来提高涉及的一系列对象操作的性能
仅基本接口的方法。 但是,ADSI 不会验证任何请求的对象是否实际
存在于服务器上。 有关详细信息,请参阅
批量写入/修改操作的快速绑定选项

此选项对于绑定到非 Active Directory 目录服务(例如 Exchange 5.5)也很有用。
其中 objectClass 查询将失败。
ADS_USE_SIGNING
值: 0x40
验证数据完整性。 还必须设置 ADS_SECURE_AUTHENTICATION 标志
以使用签名。

注意 WinNT 提供程序不支持此选项。

 
ADS_USE_SEALING
值: 0x80
使用 Kerberos 将数据加密。 还必须设置 ADS_SECURE_AUTHENTICATION 标志
使用密封。

注意 WinNT 提供程序不支持此选项。

 
ADS_USE_DELEGATION
值: 0x100
使 ADSI 能够委托用户安全上下文,这是跨域移动对象所必需的。
ADS_SERVER_BIND
值: 0x200
如果在 LDAP 路径中传递了 Active Directory DNS 服务器名称,则会强制 A 记录查找和
在解析主机名时绕过任何 SRV 记录查找。

注意 WinNT 提供程序不支持此选项。

 
ADS_NO_REFERRAL_CHASING
值: 0x400
指定此标志以在连接生存期关闭引荐追逐。 但是,即使此标志
指定,ADSI 仍允许在设置容器枚举时设置引荐追逐行为
中使用 ADS_OPTION_REFERRALS
容器 枚举中所述ADS_OPTION_ENUM (
使用引荐追逐
IADsObjectOptions::SetOption) 和
单独搜索 (,如 中所述
使用 IDirectorySearch) 进行引荐追逐

注意 WinNT 提供程序不支持此选项。

 
ADS_AUTH_RESERVED
值: 0x80000000
保留。

注解

ADS_SECURE_AUTHENTICATION标志可以与其他标志(如ADS_READONLY_SERVERADS_PROMPT_CREDENTIALSADS_FAST_BIND等)结合使用。

无服务器绑定是指客户端尝试绑定到 Active Directory 对象而未在绑定字符串中显式指定 Active Directory 服务器的过程。 这是可能的,因为 LDAP 提供程序依赖于 Windows 的定位器服务来查找客户端的最佳域控制器 (DC) 。 但是,客户端必须在 Active Directory 域控制器上具有帐户才能利用无服务器绑定功能,并且无服务器绑定使用的 DC 将始终位于默认域中;即与执行绑定的线程的当前安全上下文关联的域。

由于 VBScript 无法从类型库读取数据,因此 VBScript 应用程序无法识别上面定义的符号常量。 请改用数字常量在 VBScript 应用程序中设置适当的标志。 若要将符号常量用作良好的编程做法,请在 Visual Basic 脚本版本应用程序中编写此类常量的显式声明,如此处所示。

示例

下面的代码示例演示如何使用 IADsOpenDSObject 通过 WinNT 提供程序的安全身份验证在 fabrikam 上打开对象。

Const ADS_SECURE_AUTHENTICATION = 1

Dim dso As IADsOpenDSObject
Dim domain As IADsDomain
 
Set dso = GetObject("WinNT:")
Set domain = dso.OpenDSObject("WinNT://Fabrikam", vbNullString, vbNullString, ADS_SECURE_AUTHENTICATION)

下面的代码示例演示如何将 ADS_SECURE_AUTHENTICATION 标志与 ADsOpenObject 一起使用,以验证绑定为“JeffSmith”的用户。 用户名可以是 UPN 格式:“”JeffSmith@Fabrikam.com,以及可分辨名称格式:“CN=JeffSmith,DC=Fabrikam,DC=COM”。

IADs *pObject = NULL;
HRESULT hr;
hr = ADsOpenObject(_bstr_t("LDAP://CN=JeffSmith, DC=fabrikam, DC=com"),
                   NULL,
                   NULL,
                   ADS_SECURE_AUTHENTICATION, 
                   IID_IADs,
                   (void**) &pObject);
if (hr != S_OK)
    {} // Handle open object errors here.
else
    {} // Object was retrieved, continue processing here.

要求

要求
最低受支持的客户端 Windows Vista
最低受支持的服务器 Windows Server 2008
标头 iads.h

另请参阅

ADSI 枚举

ADSI 系统提供程序

ADsOpenObject

IADsAccessControlEntry

IADsOpenDSObject