2010-12-03 46 views
1

J'ai une application web qui utilise des serveurs backend (UNC, HTTP et SQL). Pour que cela fonctionne, j'ai besoin de configurer ServicePrincipalNames pour le compte exécutant IIS AppPool, puis autoriser la délégation de Kerberos aux services backend.Installer la délégation kerberos automatiquement

Je sais comment configurer ce à travers l'onglet « délégation » de l'outil Utilisateurs et ordinateurs.

Cependant, l'application va être déployé à un certain nombre d'environnements Active Directory. La configuration manuelle de la délégation s'est révélée être sujette aux erreurs et le débogage des problèmes de configuration incorrecte prend du temps. Je voudrais créer un script d'installation ou un programme qui peut le faire pour moi.

Est-ce que quelqu'un sait comment script ou définir par programme délégation contrainte au sein de AD?

A défaut comment puis-je lire de texte les services autorisés pour un utilisateur de valider qu'il a été configuré correctement?

Répondre

3

OK, après beaucoup de creuser sur Internet et quelques tests, j'ai une voie à suivre.

Le code suivant est C#. La définition d'un SPN pour un utilisateur ou un ordinateur peut être effectuée via l'utilitaire setspn.

Sinon, le code C# suivant peut faire la même chose:

DirectoryEntry de = new DirectoryEntry("LDAP://"+usersDN); 

if (!de.Properties["servicePrincipalName"].Contains(spnString)) 
{ 
    de.Properties["servicePrincipalName"].Add(spnString); 
    de.CommitChanges(); 
} 

Pour définir la délégation contrainte:

if (!de.Properties["msDS-AllowedToDelegateTo"].Contains(backendSpnString)) 
{ 
    de.Properties["msDS-AllowedToDelegateTo"].Add(backendSpnString); 
    de.CommitChanges(); 
} 

Si l'utilisateur a eu délégation non contrainte activée, vous devrez peut-être tourner ceci off avant l'autorisation contraint - mais je n'ai pas entièrement testé ce scénario.