DsBindWithSpnExA 函数 (ntdsapi.h)

DsBindWithSpnEx 函数使用指定的凭据和特定的服务主体名称 (SPN) 绑定到域控制器,以便相互进行身份验证。 此函数类似于 DsBindWithSpn 函数,只不过此函数允许使用 BindFlags 参数使用更多绑定选项。

如果需要对相互身份验证进行完全控制,则提供此函数。 如果希望 DsBind 为你查找服务器,请不要使用此函数,因为 SPN 特定于计算机,并且你提供的 SPN 不太可能与 DsBind 为你找到的服务器匹配。 提供 NULLServicePrincipalName 参数会导致与 DsBindWithCred 相同的行为。

语法

NTDSAPI_POSTXP DWORD DsBindWithSpnExA(
  [in, optional] LPCSTR                   DomainControllerName,
  [in, optional] LPCSTR                   DnsDomainName,
  [in, optional] RPC_AUTH_IDENTITY_HANDLE AuthIdentity,
  [in, optional] LPCSTR                   ServicePrincipalName,
  [in, optional] DWORD                    BindFlags,
  [out]          HANDLE                   *phDS
);

参数

[in, optional] DomainControllerName

指向以 null 结尾的字符串的指针,该字符串包含要绑定的域的完全限定 DNS 名称。 有关详细信息,请参阅 DsBind 主题中的 DomainControllerName 说明。

[in, optional] DnsDomainName

指向以 null 结尾的字符串的指针,该字符串包含要绑定的域的完全限定 DNS 名称。 有关详细信息,请参阅 DsBind 主题中的 DnsDomainName 说明。

[in, optional] AuthIdentity

包含表示要用于绑定的凭据 的RPC_AUTH_IDENTITY_HANDLE 值。 The

DsMakePasswordCredentials 函数用于获取此值。 如果此参数为 NULL,则使用调用线程的凭据。

在使用 DsFreePasswordCredentials 函数释放此句柄之前,必须调用 DsUnBind

[in, optional] ServicePrincipalName

指向以 null 结尾的字符串的指针,该字符串指定要分配给客户端的服务主体名称。 在 ServicePrincipalName 中传递 NULL 等效于对 DsBindWithCred 函数的调用。

[in, optional] BindFlags

包含一组定义此函数行为的标志。 此参数可以包含零个值,也可以包含以下列表中列出的值的组合。

NTDSAPI_BIND_ALLOW_DELEGATION (1)

使绑定使用委托模拟级别。 这允许需要委派的操作(如 DsAddSidHistory)成功。 指定此标志还会导致 DsBindWithSpnExDsBindWithSpn 一样运行。

如果未指定此标志,绑定将使用模拟模拟级别。 有关详细信息,请参阅 模拟级别

大多数操作不需要委托模拟级别,因此仅当绝对需要时才应指定此标志。 绑定到具有代理模拟级别的恶意服务器将允许恶意服务器使用凭据连接到非恶意服务器并执行意外操作。

NTDSAPI_BIND_FIND_BINDING (2)

保留。

NTDSAPI_BIND_FORCE_KERBEROS (4)

Active Directory 轻型目录服务: 如果指定了此标志, DsBindWithSpnEx 将强制使用 Kerberos 身份验证。 如果无法建立 Kerberos 身份验证, DsBindWithSpnEx 将不会尝试使用任何其他方法进行身份验证。

[out] phDS

接收绑定句柄的 HANDLE 值的地址。 若要关闭此句柄,请将其传递给 DsUnBind 函数。

返回值

如果成功 则返回ERROR_SUCCESS,否则返回 Windows 或 RPC 错误代码。 以下列表列出了常见的错误代码。

注解

注意

ntdsapi.h 标头将 DsBindWithSpnEx 定义为别名,该别名根据 UNICODE 预处理器常量的定义自动选择此函数的 ANSI 或 Unicode 版本。 将非特定编码别名与非非特定编码的代码混合使用可能会导致不匹配,从而导致编译或运行时错误。 有关详细信息,请参阅 函数原型的约定

要求

要求
最低受支持的客户端 Windows Vista
最低受支持的服务器 Windows Server 2008
目标平台 Windows
标头 ntdsapi.h
Library Ntdsapi.lib
DLL Ntdsapi.dll

另请参阅

域控制器和复制管理功能

DsBind

DsBindWithCred

DsBindWithSpn

DsUnBind

模拟级别