Поделиться через


Функция DsMakeSpnA (dsparse.h)

Функция DsMakeSpn создает имя субъекта-службы ( SPN), определяющее экземпляр службы.

Клиентское приложение использует эту функцию для создания имени участника-службы, который используется для проверки подлинности экземпляра службы. Например, клиент может передать имя субъекта-службы в параметре pszTargetName функции InitializeSecurityContext.

Синтаксис

DSPARSE DWORD DsMakeSpnA(
  [in]           LPCSTR ServiceClass,
  [in]           LPCSTR ServiceName,
  [in, optional] LPCSTR InstanceName,
  [in]           USHORT InstancePort,
  [in, optional] LPCSTR Referrer,
  [in, out]      DWORD  *pcSpnLength,
  [out]          LPSTR  pszSpn
);

Параметры

[in] ServiceClass

Указатель на строку с константой, завершаемой значением NULL, которая указывает класс службы. Этот параметр может быть любой строкой, уникальной для этой службы; Либо имя протокола, например ldap, либо строковая форма GUID, допустимы.

[in] ServiceName

Указатель на строку, завершающую значение NULL, указывающую DNS-имя, имя NetBIOS или различающееся имя (DN). Этот параметр должен быть неnull.

Дополнительные сведения о том, какserviceName , InstanceName и Параметры Instance Port используются для создания имени субъекта-службы, см. в следующем разделе "Примечания".

[in, optional] InstanceName

Указатель на строку, завершающуюся значением NULL, которая указывает DNS-имя или IP-адрес узла для экземпляра службы.

Если ServiceName указывает DNS или NetBIOS-имя узла службы, параметр InstanceName должен быть NULL.

Если ServiceName указывает доменное имя DNS, имя записи DNS SRV или различающееся имя, например DN точки подключения службы, параметр InstanceName должен указать DNS или NetBIOS имя узла службы.

[in] InstancePort

Номер порта для экземпляра службы. Используйте 0 для порта по умолчанию. Если этот параметр равен нулю, имя субъекта-службы не включает номер порта.

[in, optional] Referrer

Указатель на строку с константой, завершаемой значением NULL, которая указывает DNS-имя узла, который дал ссылку на IP-адрес. Этот параметр игнорируется, если параметр ServiceName указывает IP-адрес.

[in, out] pcSpnLength

Указатель на переменную, содержащую длину в символах буфера, который получит новое созданное имя субъекта-службы. Это значение может быть 0, чтобы запросить окончательный размер буфера заранее.

Параметр pcSpnLength также получает фактическую длину созданного имени субъекта-службы, включая завершающий символ NULL.

[out] pszSpn

Указатель на строку, завершающуюся значением NULL, которая получает созданную имя субъекта-службы. Этот буфер должен быть длиной, указанной pcSpnLength. Параметр pszSpn может быть NULL запрашивать окончательный размер буфера заранее.

Возвращаемое значение

Если функция возвращает имя субъекта-службы, возвращаемое значение ERROR_SUCCESS. Если функция завершается ошибкой, возвращаемое значение может быть одним из следующих кодов ошибок.

Замечания

Формат имени субъекта-службы, созданного функцией dsMakeSpn, зависит от входных параметров. Существует два основных формата. Оба формата начинаются с строки ServiceClass , а затем имя компьютера узла и дополнительный компонент InstancePort.

Примечание Этот формат используется службами на основе узлов.
 

Создание имени субъекта-службы с "<ServiceClass>/><узла"

  1. Задайте параметру ServiceName DNS-имя хост-компьютера для экземпляра службы. Это главный компонент имени участника-службы.
  2. Задайте для параметров имя экземпляра и для параметра NULL.
  3. Задайте для параметра InstancePort значение нулю. Если InstancePort ненулевое, имя субъекта-службы имеет следующий формат:
    <service class>/<host>:<instance port>/<referrer>
    
примечание Этот формат используется реплицируемыми службами.
 

Создание имени субъекта-службы с><ServiceClass /><узла:<InstancePort>"format

  1. Задайте параметру InstanceName DNS-имя хост-компьютера для экземпляра службы. Это компонент узла.
  2. Задайте параметру ServiceName строку, которая определяет экземпляр службы. Например, это может быть различающееся имя точки подключения службы для этого экземпляра службы.
  3. Задайте для параметра ссылок значение NULL .
  4. Задайте для параметра InstancePort значение нулю. Если InstancePort ненулевое, имя субъекта-службы имеет следующий формат:
    <service class>/<host>:<instance port>/<service name>
    
Параметр ссылки используется только в том случае, если параметр ServiceName указывает IP-адрес хост-компьютера службы. В этом случае ссылки указывает DNS-имя компьютера, который дал IP-адрес в качестве ссылки. Имя участника-службы имеет следующий формат:
<service class>/<host>:<instance port>/<referrer>

Где компонент узла является строкой InstanceName или строкой serviceName ServiceName, если имя_экземпляра равно NULL, а компонент InstancePort является необязательным.

Строковые параметры не могут включать символ косой черты (/), так как он используется для разделения компонентов имени участника-службы.

Заметка

Заголовок dsparse.h определяет DsMakeSpn как псевдоним, который автоматически выбирает версию ANSI или Юникод этой функции на основе определения константы препроцессора ЮНИКОДа. Сочетание использования псевдонима, нейтрального для кодирования, с кодом, не зависящим от кодирования, может привести к несоответствиям, которые приводят к ошибкам компиляции или среды выполнения. Дополнительные сведения см. в соглашениях о прототипах функций.

Требования

Требование Ценность
минимальные поддерживаемые клиентские Windows Vista
минимальный поддерживаемый сервер Windows Server 2008
целевая платформа Виндоус
заголовка dsparse.h (include Ntdsapi.h)
библиотеки Ntdsapi.lib
DLL Ntdsapi.dll

См. также

функции управления доменами и репликацией

InitializeSecurityContext