Cómo un servicio crea sus SPN

Un servicio puede usar dos funciones para componer sus SPN: DsGetSpn es una función de uso general para redactar SPN y DsServerRegisterSpn es una función especializada para redactar y registrar SPN simples para un servicio basado en host.

Normalmente, un instalador de servicio usa la función DsGetSpn para crear SPN, que después se registra en la cuenta de inicio de sesión del servicio mediante la función DsWriteAccountSpn . DsGetSpn puede realizar las siguientes funciones.

  • Cree un SPN simple con el formato de "<clase> de servicio/<host>" para un servicio basado en host.
  • Cree un SPN complejo que incluya el componente "<nombre> de servicio" que usan los servicios replicables o el componente "<puerto>" que distingue varias instancias de un servicio en un único host.
  • Cree un único SPN con el componente "<host>" establecido en el nombre de un host especificado o en el nombre del equipo local de forma predeterminada.
  • Cree una matriz de SPN para varias instancias de servicio que se ejecutarán en varios hosts en todo el bosque. Cada SPN especifica el nombre del host para una instancia de servicio.
  • Cree una matriz de SPN para varias instancias de servicio que se ejecutarán en el mismo host. Cada SPN especifica el nombre del host y un número de puerto para una instancia de servicio.

La matriz de nombres devuelta por DsGetSpn debe liberarse llamando a la función DsFreeSpnArray .

Tenga en cuenta que las funciones DsGetSpn, DsWriteAccountSpn y DsServerRegisterSpn no comprueban que los SPN sean únicos. Dado que se produce un error en la autenticación mutua si un cliente presenta un SPN que no es único, compruebe la unicidad antes de registrar un SPN. Para ello, busque los atributos servicePrincipalName del catálogo global (GC) que coincidan con el SPN. Para obtener más información sobre cómo buscar en el GC, vea Búsqueda del catálogo global.