Platform SDK: Active Directory, ADSI, and Directory Services |
The DsMakeSpn function constructs a service principal name (SPN) that identifies an instance of a service.
A client program uses this function to compose an SPN, which it uses to authenticate the service instance. For example, the client could pass an SPN in the pszTargetName parameter of the InitializeSecurityContext function.
DWORD DsMakeSpn( LPCTSTR ServiceClass, LPCTSTR ServiceName, LPCTSTR InstanceName, USHORT InstancePort, LPCTSTR Referrer, DWORD *pcSpnLength, LPTSTR pszSpn );
See the following Remarks section for information on how the ServiceName, InstanceName and InstancePort parameters are used to compose an SPN.
If ServiceName specifies the DNS or NetBIOS name of the service's host computer, the InstanceName parameter must be NULL.
If ServiceName specifies a DNS domain name, the name of a DNS SRV record, or a distinguished name, such as the DN of a service connection point, the InstanceName parameter must specify the DNS or NetBIOS name of the service's host computer.
The pcSpnLength parameter also receives the actual length of the SPN created, including the terminating null.
If the function returns an SPN, the return value is ERROR_SUCCESS.
If the function fails, the return value can be one of the following error codes.
The format of the SPN produced by the DsMakeSpn function depends on the input parameters. There are two basic formats. Both formats begin with the ServiceClass string followed by a host computer name and an optional InstancePort component.
To produce an SPN with the following format: (used by host-based services)
ServiceClass/ host
ServiceClass/ host: InstancePort/ Referrer
To produce an SPN with the following format: (used by replicable services)
ServiceClass/ host: InstancePort
ServiceClass/host: InstancePort/ ServiceName
The Referrer parameter is used only if the ServiceName parameter specifies the IP address of the service's host computer. In this case, Referrer specifies the DNS name of the computer that gave the IP address as a referral. The SPN has the following format:
ServiceClass/ host: InstancePort/ Referrer
where the host component is the InstanceName string or the ServiceName string if InstanceName is NULL, and the InstancePort component is optional.
String parameters cannot include the forward slash ('/') character, as it is used to separate the components of the SPN.
Windows NT/2000: Requires Windows 2000.
Header: Declared in Ntdsapi.h.
Library: Included as a resource in Ntdsapi.dll.
Unicode: Implemented as Unicode and ANSI versions on Windows 2000.
DC and Replication Management Functions, InitializeSecurityContext