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

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

[in, optional] DnsDomainName

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

[in, optional] AuthIdentity

包含一个 RPC_AUTH_IDENTITY_HANDLE 值,该值表示要用于绑定的凭据。 这

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
目标平台 窗户
标头 ntdsapi.h
Ntdsapi.lib
DLL Ntdsapi.dll

另请参阅

域控制器和复制管理功能

DsBind

DsBindWithCred

DsBindWithSpn

DsUnBind

模拟级别