Propagation / changement des mots de passe avec MIIS / FIM

Il existe une méthode de propagation des mots de passe via MIIS / FIM à savoir la propagation des mots de passe via PNCS. Le principe est de modifier le mot de passe via les mécaniques Active Directory. Avant que le mot de passe soit crypté, le service PNCS (à installer sur chaque DC) l’intercepte et l’envoi à MIIS qui le transfère ensuite vers d’autres sources de données (exemple : LDAP). Ce processus de propagation fonctionne quant à lui en mode évènementiel et non sur une logique de batch.

Ce scénario de synchronisation de mots de passe fonctionne suivant la logique suivante :

image

L’exemple décrit comment mettre en place cette fonctionnalité très intéressante dans le contexte de l’entreprise.

· Mettre à jour le schéma, lancer la commande le XXXX.msi avec le paramètre « SCHEMAONLY=TRUE ».

· Installer Password change Notification Service.msi. Le fichier .msi est à installer avec un compte administrateur. Le fichier .msi est à installer sur chaque contrôleur de domaine.

· Vérifier que PNCS est bien installé en se dirigeant vers l’observateur d’évènements (eventvwr.msc). L’évènement est : 2105 – PCNS has started.

· Installer le service PCNS sur le contrôleur de domaine et redémarrer le serveur

· Créer un SPN pour le service MIIS en tapant la commande : setspn -A PCNSCLNT/<FQDNSrvMIIS>\administrateur

· Paramétrage du service PCNS (pcnscfg.exe service) :
Taper la commande : pcnscfg service /L:5 /A:20 /R:3 /I:10
/L: MaximumQueueLength
/A: MaximumQueueAge (s)
/R: MaximumNotificationRetries
/I: RetryInterval (s)

· Ajouter la cible MIIS comme cible de PCNS (pcnscfg.exe addtarget). Taper la commande : pcnscfg.exe ADDTARGET /N:MIIS /A: <FQDNSrvMIIS>/S:PCNSCLNT/<FQDNSrvMIIS>/FI: "utilisa. du domaine"

/FE:"domain admins"
/N:Name nom en clair qui sera inscrit dans AD comme référence
/A:fqdn de la cible
/S:SPN associé au service cible
/FI:Group pour lesquels PCNS forward les changements de mot de passe (sans le nom de domaine)
/FE:Group pour lesquels le forward des changements de mot de passe est exclus (sans le nom de domaine)

· Noter les messages signalant le changement de configuration de PCNS dans l’Event log

· Configurer MIIS pour la synchronisation des mots de passe

o Sélectionner le menu ToolsèOptions et cliquer sur « Enable Password Synchronization »

clip_image002[4]

 

· Configuration de MIIS de la partition de synchronisation source

o Sélectionner les propriétés du MA AD et cliquer sur la « Configure Directory Partition »

o Cliquer sur « Enable this partition as a password synchronization source »

clip_image003[4]

· Définir les cibles en cliquant sur Targets, puis cocher MA LDAP (par exemple) comme source

clip_image004[4]

· Enfin autoriser le changement le mot de passe dans LDAP

clip_image005[4]

Modifier le code de la .dll LDAPPasswordExtension pour que la synchronisation de mot de passe fonctionne dans son environnement :

public void BeginConnectionToServer(

        string connectTo,

        string user,

        string password)

        {

m_connection.InitConnection(connectTo, user, password, true, AuthType.Basic);

}

public void SetPassword(CSEntry csentry, string NewPassword)

      {

                  LdapConnection check_con = null;

 

                  try {

                        // write the new password in the userPassword attribute

                        DirectoryAttributeCollection dac = new DirectoryAttributeCollection();

                        DirectoryAttribute da = new DirectoryAttribute("userPassword", LdapOp.Mod);

                        da.Add(NewPassword);

                        dac.Add(da);

 

                        LdapConnector.Modify(m_connection, csentry.DN.ToString(), dac);

 

                        // check if the password was changed by performing a bind with this account

                        check_con = LdapConnector.CreateConnection(

                              m_connection.Server, m_connection.Port, csentry.DN.ToString(), NewPassword, false, false);

                  } catch (Exception) {

                        throw new Microsoft.MetadirectoryServices.PasswordExtensionException("Password set failed for " + csentry.DN.ToString());

                  } finally {

                        if (check_con != null) {

                              check_con.Close();

                        }

                  }

            }

Pour plus d’information sur la configuration de la synchronisation de mot de passe, se diriger vers : https://technet.microsoft.com/en-us/library/cc720654(WS.10).aspx