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


Как служба создает свои служебные имена

Служба может использовать две функции для создания имен субъектов-служб: DsGetSpn — это функция общего назначения для создания имен субъектов-служб и dsServerRegisterSpn — это специализированная функция для создания и регистрации простых имен субъектов-служб для службы на основе узла.

Установщик службы обычно использует функцию DsGetSpn для составления SPN, которые он затем регистрирует в учетной записи входа службы с помощью функции DsWriteAccountSpn. DsGetSpn могут выполнять следующие функции.

  • Создайте простое имя субъекта-службы в формате "<класс службы>/<узел>" для службы, основанной на узле.
  • Создайте сложное SPN, включающее компонент "<имя службы>", используемый реплицируемыми службами, или компонент "<порт>", который различает несколько экземпляров службы на одном узле.
  • Создайте одну имя субъекта-службы с компонентом>узла<" с именем указанного узла или именем локального компьютера по умолчанию.
  • Создайте массив SPN для нескольких экземпляров служб, которые будут запущены на нескольких узлах в лесу Active Directory. Каждое SPN указывает имя узла, на котором размещен экземпляр службы.
  • Создайте массив СПН для нескольких экземпляров служб, работающих на одном узле. Каждое имя службы указывает имя узла и номер порта для экземпляра службы.

Массив имен, возвращаемых DsGetSpn, должен быть освобожден путем вызова функции DsFreeSpnArray.

Помните, что функции DsGetSpn, DsWriteAccountSpnи DsServerRegisterSpn не проверяют уникальность имен субъектов-служб (SPN). Так как взаимная проверка подлинности завершается ошибкой, если клиент представляет имя участника-службы, которое не является уникальным, проверьте уникальность перед регистрацией имени участника-службы. Для этого найдите в глобальном каталоге (GC) атрибуты servicePrincipalName, которые соответствуют вашему SPN. Для получения дополнительной информации о поиске в глобальном каталоге см. раздел Поиск.