Cómo un servicio registra sus SPN

Para que un cliente pueda usar un SPN para autenticar una instancia de un servicio, el SPN debe registrarse en la cuenta de usuario o equipo que usará la instancia de servicio para iniciar sesión. Normalmente, el registro de SPN se realiza mediante un programa de instalación de servicios que se ejecuta con privilegios de administrador de dominio.

El instalador de servicio que instala una instancia de servicio en un equipo host normalmente realiza el procedimiento siguiente.

Para registrar SPN para una instancia de servicio

  1. Llame a la función DsGetSpn para crear uno o varios SPN únicos para la instancia de servicio. Para obtener más información, vea Formatos de nombre para SPN únicos.
  2. Llame a la función DsWriteAccountSpn para registrar los nombres en la cuenta de inicio de sesión del servicio.

DsWriteAccountSpn registra LOS SPN como una propiedad de un objeto de cuenta de usuario o equipo en el directorio. los objetos user y computer tienen un atributo servicePrincipalName , que es un atributo multivalor para almacenar todos los SPN asociados a una cuenta de usuario o equipo. Si el servicio se ejecuta en una cuenta de usuario, los SPN se almacenan en el atributo servicePrincipalName de esa cuenta. Si el servicio se ejecuta en la cuenta LocalSystem, los SPN se almacenan en el atributo servicePrincipalName de la cuenta del equipo host del servicio. El llamador DsWriteAccountSpn debe especificar el nombre distintivo del objeto de cuenta en el que se almacenan los SPN.

Para asegurarse de que los SPN registrados son seguros, el atributo servicePrincipalName no se puede escribir directamente; solo se puede escribir llamando a DsWriteAccountSpn. El autor de la llamada debe tener acceso de escritura al atributo servicePrincipalName de la cuenta de destino. Normalmente, el acceso de escritura solo se concede de forma predeterminada a los administradores de dominio. Sin embargo, hay un caso especial en el que el sistema permite que un servicio que se ejecute en la cuenta localSystem registre sus propios SPN en la cuenta de equipo del host del servicio. En este caso, el SPN que se escribe debe tener el formato "<clase> de servicio/<host" y "<host>>" debe ser el nombre DNS del equipo local.

DsWriteAccountSpn también puede quitar SPN de una cuenta. Un parámetro de operación indica si los SPN se van a agregar a la cuenta, quitarlos de la cuenta o usarse para reemplazar completamente todos los SPN actuales de la cuenta. Cuando se desinstala una instancia de servicio, quite los SPN registrados para esa instancia.

Para obtener más información y un ejemplo de código que registra o anula el registro de los SPN de un servicio, consulte Registro de los SPN para un servicio.

Los servicios basados en host que usan el formato SPN simple "<clase> de servicio/<host>", tienen la opción de usar la función DsServerRegisterSpn , que crea y registra SPN para una instancia de servicio. DsServerRegisterSpn es una función auxiliar que llama a DsGetSpn y DsWriteAccountSpn.

Para obtener más información, vea Cuentas de inicio de sesión de servicio.