• Supprimer l'information de temps d'inactivité dans Lync Server 2010

    Bien que ce ne soit pas mon habitude de poster pour mentionner la sortie d'une mise à jour, celle-ci est un peu particulière car elle apporte la possibilité de ne plus afficher l'information appelée LastActive dans le client Lync 2010. Cette information est en fait la durée affichée à côté de l'état de présence des utilisateurs dans Lync lorsqu'ils sont connectés et inactifs ou alors hors ligne. On voit généralement quelque chose comme "Hors ligne - 1 heure".

    En appliquant la dernière mise à jour de Lync Server 2010 (http://support.microsoft.com/kb/2698370/en-us) et en appliquant la méthode indiquée dans la KB http://support.microsoft.com/kb/2684128/en-us, il est possible de dire aux Front End Lync de ne pas propager l'information d'inactivité, ce qui a pour effet de ne plus l'afficher dans le client Lync.

    Pour le moment, cette mise à jour de Lync Server n'est disponible qu'en faisant une demande au support (via l'article de la KB http://support.microsoft.com/kb/2698370/en-us).

  • Contrôler le transfert de fichiers au niveau des serveurs Edge Lync

    La mise à jour Cumulative Update 4 de Lync Server apporte une fonctionnalité indiquée sur http://support.microsoft.com/kb/2621840 : An update is available to enable the control of the file transfer through the Access Edge service in a Lync Server 2010 environment.

    La méthode pour bloquer le transfert de fichiers est la suivante :

    • Mettre à jour l’environnement Lync Server 2010 avec le CU4 – pas seulement sur les serveurs Edge
    • Utiliser la commande Lync PowerShell suivante : Set-CsImFilterConfiguration -Identity <Edge> -BlockFileExtension $True
      • Avec <Edge> valant le paramètre Identity retourné par Get-CsService -EdgeServer
  • Résoudre le problème Unable to update destination pool ou similaire dans Lync Server Control Panel

    Lors de la migration de comptes depuis OCS vers Lync via le Control Panel, il peut y avoir des comptes qui rencontres des erreurs. Dans ce cas précis, le Lync Server Control Panel reporte le message “Unable to update destination pool”, ce qui signifie que le serveur Lync n’a pas les permissions nécessaires pour mettre à jour les propriétés AD de l’utilisateur qui doit être déplacé.

    Ce problème apparait généralement sur des comptes qui n’héritent pas des permission appliquées par Lync au moment des étapes Forest Prep et Domain prep. Cependant, on distingue 2 cas :

    1. L’héritage des permissions sur l’objet utilisateur a été désactivé, et il s’agit d’un utilisateur normal
    2. L’héritage des permissions sur l’objet utilisateur est désactivé car il s’agit d’un compte qui est ou qui a été membre d’un groupe d’administrateurs (Domain Admins, Print Operators…)

    Dans le premier cas, il suffit d’éditer les paramètres de sécurité de l’objet utilisateur pour réappliquer l’héritage des permissions.

    Dans le second cas, l’héritage des permissions est désactivé automatiquement et périodiquement par Active Directory parce que le compte est ou a été membre d’un groupe d’administrateurs. Cela est en rapport avec le mécanisme AdminSDHolder (pour plus d’informations, voir http://technet.microsoft.com/en-us/query/ee361593).

    Pour éviter tout problème pour ces comptes utilisateurs, la méthode consiste à autoriser certains groupes de sécurité Lync à lire ou écrire des propriétés particulières directement sur l’objet AdminSDHolder : en effet, le fait d’appliquer des permissions sur cet objet fera qu’Active Directory les “répliquera” sur les objets utilisateurs sur lesquels il supprime l’héritage.

    Il est possible d’utiliser DSACLS pour appliquer les bonnes permissions sur l’objet AdminSDHolder. Il faut indiquer le chemin LDAP de l’objet AdminSDHolder, par exemple CN=AdminSDHolder,CN=System,DC=corp,DC=contoso,DC=com) pour appliquer les permissions suivantes :

    Groupe Permissions
    Authenticated Users Read Property:
    RTCUserSearchPropertySet
    RTCHSUniversalServices Replicating Directory Changes
    RTCUniversalServerReadOnlyGroup Read Content
    List Content
    Read Property
    List Object
    RTCUniversalUserReadOnlyGroup Read Content
    List Content
    Read Property
    List Object
    RTCUniversalUserAdmins Write Property:
    RTCUserProvisioningPropertySet
    msExchUCVoiceMailSettings
    RTCUserSearchPropertySet
    RTCPropertySet
    proxyAddresses
    RTCUniversalUserReadOnlyGroup Read Property:
    RTCUserProvisioningPropertySet
    Personal Information
    RTCUserSearchPropertySet
    RTCPropertySet
    Public Information
    General Information
    Account Restrictions

    Voici les commandes à passer :

    dsacls CN=AdminSDHolder,CN=System,DC=corp,DC=contoso,DC=com /I:P /G CONTOSO\RTCUniversalServerReadOnlyGroup:RCLCRPLO

    dsacls CN=AdminSDHolder,CN=System,DC=corp,DC=contoso,DC=com /I:P /G CONTOSO\RTCUniversalUserReadOnlyGroup:RCLCRPLO

    dsacls CN=AdminSDHolder,CN=System,DC=corp,DC=contoso,DC=com /I:P /G CONTOSO\RTCHSUniversalServices:CA;"Replicating Directory Changes"

    dsacls CN=AdminSDHolder,CN=System,DC=corp,DC=contoso,DC=com /I:P /G "Authenticated Users":RP;RTCUserSearchPropertySet

    dsacls CN=AdminSDHolder,CN=System,DC=corp,DC=contoso,DC=com /I:P /G CONTOSO\RTCUniversalUserAdmins:WP;RTCUserProvisioningPropertySet

    dsacls CN=AdminSDHolder,CN=System,DC=corp,DC=contoso,DC=com /I:P /G CONTOSO\RTCUniversalUserAdmins:WP;msExchUCVoiceMailSettings

    dsacls CN=AdminSDHolder,CN=System,DC=corp,DC=contoso,DC=com /I:P /G CONTOSO\RTCUniversalUserAdmins:WP;RTCUserSearchPropertySet

    dsacls CN=AdminSDHolder,CN=System,DC=corp,DC=contoso,DC=com /I:P /G CONTOSO\RTCUniversalUserAdmins:WP;RTCPropertySet

    dsacls CN=AdminSDHolder,CN=System,DC=corp,DC=contoso,DC=com /I:P /G CONTOSO\RTCUniversalUserAdmins:WP;proxyAddresses

    dsacls CN=AdminSDHolder,CN=System,DC=corp,DC=contoso,DC=com /I:P /G CONTOSO\RTCUniversalUserReadOnlyGroup:RP;RTCUserProvisioningPropertySet

    dsacls CN=AdminSDHolder,CN=System,DC=corp,DC=contoso,DC=com /I:P /G CONTOSO\RTCUniversalUserReadOnlyGroup:RP;"Personal Information"

    dsacls CN=AdminSDHolder,CN=System,DC=corp,DC=contoso,DC=com /I:P /G CONTOSO\RTCUniversalUserReadOnlyGroup:RP;RTCUserSearchPropertySet

    dsacls CN=AdminSDHolder,CN=System,DC=corp,DC=contoso,DC=com /I:P /G CONTOSO\RTCUniversalUserReadOnlyGroup:RP;RTCPropertySet

    dsacls CN=AdminSDHolder,CN=System,DC=corp,DC=contoso,DC=com /I:P /G CONTOSO\RTCUniversalUserReadOnlyGroup:RP;"Public Information"

    dsacls CN=AdminSDHolder,CN=System,DC=corp,DC=contoso,DC=com /I:P /G CONTOSO\RTCUniversalUserReadOnlyGroup:RP;"General Information"

    dsacls CN=AdminSDHolder,CN=System,DC=corp,DC=contoso,DC=com /I:P /G CONTOSO\RTCUniversalUserReadOnlyGroup:RP;"Account Restrictions"

    Attention : ces informations et commandes sont données à titre d’information. Il est obligatoire de conserver une copie des droits en place sur l’objet AdminSDHolder avant l’exécution de ces commandes pour être en mesure de rétablir les permissions d’origine en cas de problème.

  • Erreur Pool is not ready lors de la désactivation de composants OCS sur les Front End

    Dans le cas par exemple d’une migration OCS 2007 R2 vers Lync, il faudra à la fin désactiver les services sur les Front End OCS. Cela se fait tout simplement avec la console d’administration OCS où il faut désactiver les composants un à un sur les Front End.

    Il se peut que la désactivation de certains composants échoue, avec le message suivant : “A call to a subtask failed.: The call to subtask AppServer.GetAppState failed. Pool is not ready.”

    La cause de ce problème peut être liée au fait que le Conference Directory du pool a déjà été déplacé. Pour pouvoir correctement désactiver les composants, il faut donc re-déplacer le Conference Directory pour qu’il soit à nouveau sur le pool OCS. Ensuite, il faut désactivers tous les composants sauf le composant Front End.

    Une fois tous les composants désactivés à l’exception du composant Front End, il faut déplacer le Conference Directory vers le pool Lync et ensuite désactiver le composant Front End des serveurs OCS.

  • Créer un certificat SAN sur le Reverse Proxy pour Lync Server 2010

    Lync Server 2010 propose des commandes PowerShell pour créer les CSR pour les certificats. Cependant, ces commandes ne peuvent être utilisées que créer des CSR pour les serveurs ayant des rôles Lync.

    Pour créer un CSR pour le reverse proxy, la méthode suivante peut être utilisée :

    1. Renseigner les informations du certificat dans un fichier INF, y compris les entrées SAN
    2. Utiliser CertReq pour créer le CSR
    3. Utiliser CertReq pour importer le certificat émis

     

    L’exemple ci-dessous donne le contenu du fichier Cert.inf :

    [NewRequest]
    Subject = "CN=join.contoso.com,OU=IT,O=Contoso,L=Paris,S=IDF,C=FR"
    Exportable = TRUE
    KeySpec = 1
    MachineKeySet = True
    KeyLength = 2048

    [Extensions]
    2.5.29.17 = "{text}"
    _continue_ = "dns=join.contoso.com&"
    _continue_ = "dns=dialin.contoso.com&"
    _continue_ = "dns=meet.contoso.com&"
    _continue_ = "dns=lyncpoolws.contoso.com&"

    [RequestAttributes]
    CertificateTemplate =WebServer

     

    Les éléments à modifier sont :

    Elément Description
    Subject Il s’agit du champ contenant le Common Name du certificat avec les autres informations telles que Organization, OU, Location, State et Country.
    KeyLength Taille de la clé (2048 bit dans l’exemple)
    Extensions L’extension 2.5.29.17 représente l’extension Subject Alternative Name. Pour ajouter plusieurs noms DNS, il faut modifier les éléments _continue_ en préfixant toujours le nom par dns= et en terminant par &.

     

    Pour créer le CSR, il faut exécuter la commande suivante sur une machine Windows Server 2008, Windows Server 2008 R2, Windows Vista ou Windows 7 :

    CertReq -New Cert.inf Cert.txt

    Le fichier Cert.txt est le résultat de la commande, c’est-à-dire le CSR à fournir à l’autorité de certification pour obtenir le certificat.

     

    Une fois le certificat généré par l’autorité de certification (fichier ayant le nom Cert.cer par exemple), il faut lance la commande suivante sur la même machine qui a servi à créer le CSR :

    CertReq -Accept Cert.cer

    Le certificat avec sa clé privée apparaitra ensuite dans le magasin personnel du conteneur de la machine et pourra être exporté en PFX si besoin.

     

    La méthode est présentée ici pour le reverse proxy pour Lync Server 2010 mais peut être utilisée pour créer des CSR pour d’autres usages.