客户端如何编写服务的 SPN

若要对服务进行身份验证,客户端应用程序将为必须连接到的服务实例编写 SPN。 客户端应用程序可以使用 DsMakeSpn 函数编写 SPN。 客户端使用从服务本身以外的源检索的已知数据或数据指定 SPN 的组件。

SPN 的形式如以下形式所示:

<service class>/<host>:<port>/<service name>

在此窗体中,需要“服务类>”<和“<host>”。 “<port>”和“<service name>”是可选的。

通常,客户端识别名称的“服务类>”<部分,并识别要包括在 SPN 中的可选组件。 客户端可以从服务连接点(SCP)或用户输入等源检索 SPN 的组件。 例如,客户端可以读取服务的 SCP 的 serviceDNSName 属性以获取“主机>”<组件。 serviceDNSName 属性包含运行服务实例的服务器 DNS 名称,或者包含服务副本 (replica)主机数据的 SRV 记录的 DNS 名称。 仅用于副本 (replica)ble服务的“<服务名称>”组件可以是服务的 SCP 的可分辨名称、服务的域的 DNS 名称或 SRV 或 MX 记录的 DNS 名称。

有关详细信息和用于为服务撰写 SPN 的代码示例,请参阅 客户端如何对基于 SCP 的 Windows 套接字服务进行身份验证。

有关详细信息和 SPN 组件的说明,请参阅 唯一 SPN 的名称格式。