DsClientMakeSpnForTargetServerA 函数 (ntdsapi.h)

DsClientMakeSpnForTargetServer 函数构造一个服务主体名称(SPN),用于标识要用于身份验证的特定服务器。

语法

NTDSAPI DWORD DsClientMakeSpnForTargetServerA(
  [in]      LPCSTR ServiceClass,
  [in]      LPCSTR ServiceName,
  [in, out] DWORD  *pcSpnLength,
  [out]     LPSTR  pszSpn
);

参数

[in] ServiceClass

指向包含服务所定义的服务的类的 null 终止字符串的指针。 这可以是服务唯一的任何字符串。

[in] ServiceName

指向包含可分辨名称服务(DNS)主机名的以 null 结尾的字符串的指针。 这可以是完全限定的名称,也可以是 Internet 标准格式的 IP 地址。

不建议对 ServiceName 使用 IP 地址,因为这会产生安全问题。 在构造 SPN 之前,必须通过 DNS 名称解析将 IP 地址转换为计算机名称。 DNS 名称解析可能被欺骗,将预期的计算机名称替换为未经授权的计算机名称。

[in, out] pcSpnLength

指向 DWORD 值的指针,该值在条目中包含 pszSpn 缓冲区的大小(以字符为单位)。 输出时,此参数接收复制到 pszSpn 缓冲区的字符数,包括终止 NULL

[out] pszSpn

指向接收 SPN 的字符串缓冲区的指针。

返回值

此函数返回标准 Windows 错误代码。

言论

使用此函数时,提供服务类和 DNS 主机名的一部分。

此函数是 DsMakeSpn 函数的简化版本。 ServiceName 通过 DNS 解析为规范。

不支持基于 GUID 的 DNS 名称。 构造后,简化的 SPN 如下所示:

ServiceClass / ServiceName / ServiceName

实例名称部分(第二个位置)始终设置为默认值。 不使用端口和引用器字段。

注意

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

要求

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

另请参阅

域控制器和复制管理功能

DsMakeSpn