Comment un service compose ses SPN

Un service peut utiliser deux fonctions pour composer ses SPN : DsGetSpn est une fonction à usage général pour composer des SPN et DsServerRegisterSpn est une fonction spécialisée pour composer et inscrire des SPN simples pour un service hôte.

Un programme d’installation de service utilise généralement la fonction DsGetSpn pour composer des SPN, qu’il inscrit ensuite sur le compte d’ouverture de session du service à l’aide de la fonction DsWriteAccountSpn . DsGetSpn peut effectuer les fonctions suivantes.

  • Créez un spN simple avec le format «< classe>/<hôte> de service » pour un service basé sur l’hôte.
  • Créez un SPN complexe qui inclut le composant «< nom> de service » utilisé par les services réplicas ou le composant «< port> » qui distingue plusieurs instances d’un service sur un seul hôte.
  • Créez un spN unique avec le composant «< hôte> » défini sur le nom d’un hôte spécifié ou le nom de l’ordinateur local par défaut.
  • Créez un tableau de SPN pour plusieurs instances de service qui s’exécutent sur plusieurs hôtes dans la forêt. Chaque SPN spécifie le nom de l’hôte pour une instance de service.
  • Créez un tableau de SPN pour plusieurs instances de service qui s’exécuteront sur le même hôte. Chaque spN spécifie le nom de l’hôte et un numéro de port pour une instance de service.

Le tableau de noms retourné par DsGetSpn doit être libéré en appelant la fonction DsFreeSpnArray .

N’oubliez pas que les fonctions DsGetSpn, DsWriteAccountSpn et DsServerRegisterSpn ne vérifient pas que les SPN sont uniques. Étant donné que l’authentification mutuelle échoue si un client présente un SPN qui n’est pas unique, vérifiez l’unicité avant d’inscrire un SPN. Pour ce faire, recherchez les attributs du catalogue global (GC) pour les attributs servicePrincipalName qui correspondent à votre SPN. Pour plus d’informations sur la recherche dans le GC, consultez Recherche dans le catalogue global.