Configurer l’authentification Kerberos pour les services d’accès au client à charge équilibrée

Pour pouvoir utiliser l’authentification Kerberos avec des serveurs de boîtes aux lettres à charge équilibrée exécutant des services d’accès au client, vous devez effectuer les étapes de configuration décrites dans cet article.

Création du compte de service secondaire dans les services de domaine Active Directory

Tous les serveurs Exchange qui exécutent des services d’accès au client qui partagent les mêmes espaces de noms et URL doivent utiliser les mêmes informations d’identification de compte de service de remplacement ou (informations d’identification ASA). En général, il suffit d’avoir un seul compte pour une forêt pour chaque version d’Exchange.

Importante

Exchange 2010 et Exchange 2016 ne peuvent pas partager les mêmes informations d'identification ASA. Si vos informations d’identification ASA ont été créées pour Exchange 2010, vous devez en créer une nouvelle pour Exchange 2016.

Même si les enregistrements CNAME sont pris en charge pour les espaces de noms partagés, Microsoft recommande d'utiliser des enregistrements A. Ainsi, le client peut correctement émettre une demande de ticket Kerberos fondée sur le nom partagé, et non sur le serveur FQDN.

Remarque

Les comptes de service administrés de groupe (gMSA) ne sont pas pris en charge dans les environnements Exchange Server locaux et ne peuvent donc pas être utilisés dans ce scénario.

Lorsque vous configurez le compte ASA, gardez ces recommandations à l'esprit :

  • Type de compte : nous vous recommandons de créer un compte d’ordinateur au lieu d’un compte d’utilisateur. Un compte d'ordinateur ne permet pas de connexion interactive et peut avoir des stratégies de sécurité plus simples que celles d'un compte d'utilisateur. Si vous créez un compte d'ordinateur, le mot de passe n'expire pas, mais nous vous recommandons de le mettre à jour régulièrement dans tous les cas. Vous pouvez utiliser la stratégie de groupe locale pour spécifier la durée de vie maximale du compte d'ordinateur et des scripts et ainsi supprimer régulièrement les comptes d'ordinateurs qui ne répondent pas aux exigences des stratégies actuelles. Votre stratégie de sécurité locale détermine également quand vous devez modifier le mot de passe. Bien que nous vous recommandions d'utiliser un compte d'ordinateur, vous pouvez créer un compte d'utilisateur.

  • Nom du compte : le nom du compte n’est pas requis. Vous pouvez utiliser n'importe quel nom conforme à votre schéma d'affectation de noms.

  • Groupe de comptes : le compte que vous utilisez pour les informations d’identification ASA n’a pas besoin de privilèges de sécurité spéciaux. Si vous utilisez un compte d’ordinateur, le compte doit uniquement être membre du groupe de sécurité Ordinateurs de domaine. Si vous utilisez un compte d’utilisateur, le compte doit uniquement être membre du groupe de sécurité Utilisateurs du domaine.

  • Mot de passe du compte : le mot de passe que vous fournissez lorsque vous créez le compte sera utilisé. Ainsi, lorsque vous créez le compte, vous devez utiliser un mot de passe complexe et veiller à ce qu'il soit conforme aux exigences de mot de passe de votre organisation.

Pour créer le compte ASA en tant que compte d'ordinateur, procédez comme suit :

  1. Sur un ordinateur joint au domaine, exécutez Windows PowerShell ou l'Environnement de ligne de commande Exchange Management Shell.

    Utilisez la cmdlet Import-Module pour importer le module Active Directory.

    Import-Module ActiveDirectory
    
  2. Utilisez la cmdlet New-ADComputer pour créer un compte d'ordinateur Active Directory en suivant la syntaxe de cette cmdlet :

    New-ADComputer [-Name] <string> [-AccountPassword <SecureString>] [-AllowReversiblePasswordEncryption <System.Nullable[boolean]>] [-Description <string>] [-Enabled <System.Nullable[bool]>]
    

    Exemple :

    New-ADComputer -Name EXCH2016ASA -AccountPassword (Read-Host 'Enter password' -AsSecureString) -Description 'Alternate Service Account credentials for Exchange' -Enabled:$True -SamAccountName EXCH2016ASA
    

    EXCH2016ASA est le nom du compte, la description Informations d’identification de compte de service secondaire pour Exchange correspond à ce que vous voulez, et la valeur du paramètre SamAccountName , dans ce cas EXCH2016ASA, doit être unique dans votre répertoire.

  3. Utilisez la cmdlet Set-ADComputer pour activer le support de chiffrement AES 256 utilisé par Kerberos à l'aide de la syntaxe de cette cmdlet :

    Set-ADComputer [-Name] <string> [-add @{<attributename>="<value>"]
    

    Exemple :

    Set-ADComputer EXCH2016ASA -add @{"msDS-SupportedEncryptionTypes"="28"}
    

    EXCH2016ASA est le nom du compte et l’attribut à modifier est msDS-SupportedEncryptionTypes avec une valeur décimale de 28, ce qui permet les chiffrements suivants : RC4-HMAC, AES128-CTS-HMAC-SHA1-96, AES256-CTS-HMAC-SHA1-96.

Pour en savoir plus sur ces cmdlets, consultez les articles Import-Module et New-ADComputer.

Scénarios inter-forêts

Si vous disposez d’un déploiement inter-forêts ou de forêts de ressources et que vous avez des utilisateurs en dehors de la forêt Active Directory qui contient Exchange, vous devez configurer des relations d’approbation de forêt entre les forêts. En outre, pour chaque forêt du déploiement, vous devez configurer une règle de routage qui active l’approbation entre tous les suffixes de nom au sein de la forêt et entre les forêts. Pour plus d’informations sur la gestion des approbations inter-forêts, consultez Configuration des organisations partenaires.

Identification des noms de principaux du service à associer au compte ASA

Après avoir créé les informations d’identification ASA, vous devez associer les noms de principal du service Exchange (SPN) aux informations d’identification ASA. La liste des SPN Exchange peut différer selon votre configuration, mais elle doit au moins comprendre les éléments suivants :

  • http/: Utilisez ce SPN pour Outlook Anywhere, MAPI sur HTTP, services Web Exchange, découverte automatique et carnet d’adresses en mode hors connexion.

Les valeurs du SPN doivent correspondre au nom du service sur l’équilibreur de charge réseau plutôt que sur des serveurs individuels. Pour vous aider à choisir les valeurs SPN appropriées, prenez en compte les scénarios suivants :

Chacun de ces scénarios part du principe que les noms de domaine complets (FQDN) à charge équilibrée ont été déployés pour les URL internes, les URL externes et l'URI interne de découverte automatique utilisées par les membres exécutant les services d'accès client.

Site Active Directory unique

Si vous disposez d'un site Active Directory unique, votre environnement peut ressembler à celui représenté par le schéma ci-dessous :

plusieurs sites AD.

En fonction des noms de domaine complets utilisés par les clients Outlook internes dans la figure précédente, vous devez associer les noms de service suivants aux informations d’identification ASA :

  • http/mail.corp.tailspintoys.com
  • http/autodiscover.corp.tailspintoys.com

Sites Active Directory multiples

Si vous disposez de plusieurs sites Active Directory, votre environnement peut ressembler à celui représenté par le schéma ci-dessous :

plusieurs sites AD.

En fonction des noms de domaine complets utilisés par les clients Outlook dans la figure précédente, vous devez associer les SPN suivants aux informations d’identification ASA utilisées par les serveurs de boîtes aux lettres exécutant les services d’accès au client dans ADSite 1 :

  • http/mail.corp.tailspintoys.com
  • http/autodiscover.corp.tailspintoys.com

Vous devez également associer les SPN suivants aux informations d’identification ASA utilisées par les serveurs de boîtes aux lettres exécutant les services d’accès au client dans ADSite 2 :

  • http/mailsdc.corp.tailspintoys.com
  • http/autodiscoversdc.corp.tailspintoys.com

Configuration et vérification de la configuration du compte ASA sur chaque serveur exécutant des services d'accès client

Après avoir créé le compte, vous devez vérifier que le compte a été répliqué sur tous les contrôleurs de domaine AD DS. Plus précisément, le compte doit être présent sur chaque serveur exécutant les services d’accès au client qui utiliseront les informations d’identification ASA. Ensuite, vous configurez le compte en tant que compte ASA sur chaque serveur exécutant les services d'accès client dans votre déploiement.

Vous pouvez configurer le compte ASA en utilisant l'Environnement de ligne de commande Exchange Management Shell, tel que décrit dans l'une de ces procédures :

  • Déployer les informations d’identification ASA sur le premier serveur Exchange exécutant les services d’accès au client
  • Déployer les informations d’identification ASA sur les serveurs Exchange suivants exécutant des services d’accès au client

La seule méthode prise en charge pour le déploiement des informations d'identification ASA consiste à utiliser le script RollAlternateServiceAcountPassword.ps1. Pour plus d’informations et pour obtenir les autorisations requises pour exécuter le script, consultez Utilisation du script RollAlternateserviceAccountCredential.ps1 dans l’interpréteur de commandes. Une fois le script exécuté, il est recommandé de vérifier que tous les serveurs ciblés ont été mis à jour correctement.

Déployer les informations d’identification ASA sur le premier serveur Exchange exécutant les services d’accès au client

  1. Ouvrez Exchange Management Shell sur un serveur Exchange 2016 ou Exchange 2019.

  2. Remplacez les répertoires par <répertoire> d’installation d’Exchange 2016\V15\Scripts.

  3. Exécutez la commande suivante pour déployer les informations d’identification ASA sur le premier serveur Exchange 2016 ou Exchange 2019 exécutant les services d’accès au client :

    .\RollAlternateServiceAccountPassword.ps1 -ToSpecificServer cas-1.corp.tailspintoys.com -GenerateNewPasswordFor tailspin\EXCH2016ASA$
    
  4. Lorsque vous êtes invité à indiquer si vous souhaitez modifier le mot de passe pour le compte de service de substitution, répondez Oui.

Voici un exemple de sortie qui est affiché lorsque vous exécutez le script RollAlternateServiceAccountPassword.ps1.

========== Starting at 01/12/2016 10:17:47 ==========
Creating a new session for implicit remoting of "Get-ExchangeServer" command...
Destination servers that will be updated:
Name                                                        PSComputerName
----                                                        --------------
cas-1                                                   cas-1.corp.tailspintoys.com
Credentials that will be pushed to every server in the specified scope (recent first):
UserName
Password
--------
--------
tailspin\EXCH2016ASA$
System.Security.SecureString
Prior to pushing new credentials, all existing credentials that are invalid or no longer work will be removed from  the destination servers.
Pushing credentials to server mbx-1
Setting a new password on Alternate Service Account in Active Directory
Password change
Do you want to change password for tailspin\EXCH2016ASA$ in Active Directory at this time?
[Y] Yes  [N] No  [S] Suspend  [?] Help (default is "Y"): y
Preparing to update Active Directory with a new password for tailspin\EXCH2016ASA$ ...
Resetting a password in the Active Directory for tailspin\EXCH2016ASA$ ...
New password was successfully set to Active Directory.
Retrieving the current Alternate Service Account configuration from servers in scope
Alternate Service Account properties:
StructuralObjectClass QualifiedUserName Last Pwd Update       SPNs
--------------------- ----------------- ---------------       ----
computer              tailspin\EXCH2016ASA$   1/12/2016 10:19:53 AM
Per-server Alternate Service Account configuration as of the time of script completion:
   Array: {mail.corp.tailspintoys.com}
Identity  AlternateServiceAccountConfiguration
--------  ------------------------------------
cas-1 Latest: 1/12/2016 10:19:22 AM, tailspin\EXCH2016ASA$
          ...
========== Finished at 01/12/2016 10:20:00 ==========
        THE SCRIPT HAS SUCCEEDED

Déployer les informations d’identification ASA sur un autre serveur Exchange exécutant des services d’accès au client

  1. Ouvrez Exchange Management Shell sur un serveur Exchange 2016 ou Exchange 2019.

  2. Remplacez les répertoires par <répertoire> d’installation d’Exchange 2016\V15\Scripts.

  3. Exécutez la commande suivante pour déployer les informations d’identification ASA sur un autre serveur Exchange 2016 ou Exchange 2019 exécutant les services d’accès au client :

    .\RollAlternateServiceAccountPassword.ps1 -ToSpecificServer cas-2.corp.tailspintoys.com -CopyFrom cas-1.corp.tailspintoys.com
    
  4. Répétez l'étape 3 pour chaque serveur exécutant les services d'accès client sur lequel vous souhaitez déployer les informations d'identification ASA.

Voici un exemple de sortie qui est affiché lorsque vous exécutez le script RollAlternateServiceAccountPassword.ps1.

========== Starting at 01/12/2016 10:34:35 ==========
Destination servers that will be updated:
Name                                                        PSComputerName
----                                                        --------------
cas-2                                                   cas-2.corp.tailspintoys.com
Credentials that will be pushed to every server in the specified scope (recent first):
UserName
Password
--------
--------
tailspin\EXCH2016ASA$
System.Security.SecureString
Prior to pushing new credentials, all existing credentials will be removed from the destination servers.
Pushing credentials to server mbx-2
Retrieving the current Alternate Service Account configuration from servers in scope
Alternate Service Account properties:
StructuralObjectClass QualifiedUserName Last Pwd Update       SPNs
--------------------- ----------------- ---------------       ----
computer              tailspin\EXCH2016ASA$   1/12/2016 10:19:53 AM
Per-server Alternate Service Account configuration as of the time of script completion:
   Array: cas-2.corp.tailspintoys.com
Identity  AlternateServiceAccountConfiguration
--------  ------------------------------------
cas-2 Latest: 1/12/2016 10:37:59 AM, tailspin\EXCH2016ASA$
          ...
========== Finished at 01/12/2016 10:38:13 ==========
        THE SCRIPT HAS SUCCEEDED

Vérifier le déploiement des informations d'identification ASA

  • Ouvrez Exchange Management Shell sur un serveur Exchange 2016 ou Exchange 2019.

  • Exécutez la commande suivante pour vérifier les paramètres sur un serveur exécutant les services d'accès client :

    Get-ClientAccessServer CAS-3 -IncludeAlternateServiceAccountCredentialStatus | Format-List Name, AlternateServiceAccountConfiguration
    
  • Répétez l'étape 2 sur chaque serveur exécutant les services d'accès client pour lequel vous souhaitez vérifier le déploiement des informations d'identification ASA.

Voici un exemple de la sortie qui est affichée lorsque vous exécutez la commande Get-ClientAccessServer ci-dessus et qu'aucune information d'identification ASA précédente n'a été définie.

Name                                 : CAS-1
AlternateServiceAccountConfiguration : Latest: 1/12/2016 10:19:22 AM, tailspin\EXCH2016ASA$
                                       Previous: <Not set>
                                          ...

Voici un exemple de la sortie qui est affichée lorsque vous exécutez la commande Get-ClientAccessServer ci-dessus et que des informations d'identification ASA ont été définies précédemment. Les informations d'identification ASA précédentes et la date et l'heure auxquelles elles ont été définies sont renvoyées.

Name                                 : CAS-3
AlternateServiceAccountConfiguration : Latest: 1/12/2016 10:19:22 AM, tailspin\EXCH2016ASA$
                                       Previous: 7/15/2015 12:58:35 PM, tailspin\oldSharedServiceAccountName$
                                          ...

Association des noms de principaux du service (SPN) au compte ASA

Importante

N’associez pas de SPN à des informations d’identification ASA tant que vous n’avez pas déployé ces informations d’identification sur au moins un Exchange Server, comme décrit précédemment dans Déployer les informations d’identification ASA sur le premier serveur Exchange exécutant les services d’accès au client. Dans le cas contraire, vous rencontrerez des erreurs d'authentification Kerberos.

Avant d’associer les SPN aux informations d’identification ASA, vous devez vérifier que les SPN cibles ne sont pas déjà associés à un autre compte dans la forêt. Les informations d’identification ASA doivent être le seul compte de la forêt à laquelle ces noms de service sont associés. Vous pouvez vérifier qu'aucun autre compte de la forêt n'est associé aux noms de principaux du service en exécutant la commande setspn à partir de la ligne de commande.

Pour vérifier qu'un SPN n'est pas déjà associé à un compte dans une forêt en exécutant la commande setspn, procédez comme suit :

  1. Appuyez sur Démarrer. Dans la zone Recherche, saisissez Invite de commandes, puis, dans la liste des résultats, sélectionnez Invite de commandes.

  2. Depuis l'invite de commandes, entrez la commande suivante :

    setspn -F -Q <SPN>
    

    Où <SPN> est le SPN que vous souhaitez associer au compte ASA. Par exemple :

    setspn -F -Q http/mail.corp.tailspintoys.com
    

    La commande ne doit retourner aucune donnée. Si elle renvoie des données, cela signifie qu'un autre compte est déjà associé au SPN. Répétez cette étape une fois pour chaque SPN que vous souhaitez associer aux informations d’identification ASA.

Pour associer un SPN à des informations d'identification ASA à l'aide de la commande setspn, procédez comme suit :

  1. Appuyez sur Démarrer. Dans la zone Rechercher , tapez Invite de commandes, puis sélectionnez Invite de commandes dans la liste des résultats.

  2. Depuis l'invite de commandes, entrez la commande suivante :

    setspn -S <SPN> <Account>$
    

    Où <SPN> est le SPN que vous souhaitez associer aux informations d'identification du compte ASA et <Account> est le compte associé aux informations d'identification du compte ASA. Par exemple :

    setspn -S http/mail.corp.tailspintoys.com tailspin\EXCH2016ASA$
    

    Exécutez cette commande une fois pour chaque SPN que vous souhaitez associer aux informations d’identification ASA.

Pour vérifier que vous avez associé les noms SPN aux informations d'identification ASA à l'aide de la commande setspn, procédez comme suit :

  1. Appuyez sur Démarrer. Dans la zone Rechercher , tapez Invite de commandes, puis sélectionnez Invite de commandes dans la liste des résultats.

  2. Depuis l'invite de commandes, entrez la commande suivante :

    setspn -L <Account>$
    

    Où <Account> est le compte associé au compte ASA. Par exemple :

    setspn -L tailspin\EXCH2016ASA$
    

    Vous devez exécuter cette commande une seule fois.

Activation de l'authentification Kerberos pour les clients Outlook

  1. Ouvrez Exchange Management Shell sur un serveur Exchange 2016 ou Exchange 2019.

  2. Pour activer l’authentification Kerberos pour les clients Outlook Anywhere, exécutez la commande suivante sur votre serveur Exchange 2016 ou Exchange 2019 qui exécute les services d’accès au client :

    Get-OutlookAnywhere -Server CAS-1 | Set-OutlookAnywhere -InternalClientAuthenticationMethod  Negotiate
    
  3. Pour activer l’authentification Kerberos pour les clients MAPI sur HTTP, exécutez la commande suivante sur votre serveur Exchange 2016 ou Exchange 2019 qui exécute les services d’accès au client :

    Get-MapiVirtualDirectory -Server CAS-1 | Set-MapiVirtualDirectory -IISAuthenticationMethods Ntlm,Negotiate
    

    Dans les environnements hybrides avec Exchange Online ou si vous utilisez OAuth en interne, exécutez les commandes suivantes sur votre serveur Exchange 2016 ou Exchange 2019 qui exécute les services d’accès au client :

    $mapidir = Get-MapiVirtualDirectory -Server CAS-1
    $mapidir | Set-MapiVirtualDirectory -IISAuthenticationMethods ($mapidir.IISAuthenticationMethods +='Negotiate')
    
  4. Répétez les étapes 2 et 3 pour chaque serveur Exchange 2016 ou Exchange 2019 exécutant les services d’accès au client pour lesquels vous souhaitez activer l’authentification Kerberos.

Vérifier l’authentification Kerberos du client Exchange

Une fois que vous avez correctement configuré Kerberos et les informations d’identification ASA, vérifiez que les clients peuvent s’authentifier correctement, comme décrit dans ces tâches.

Vérifiez que le service Hôte de services Microsoft Exchange est en cours d'exécution

Le service Hôte de service Microsoft Exchange (MSExchangeServiceHost) sur le serveur qui exécute les services d’accès au client est responsable de la gestion des informations d’identification ASA. Si ce service n'est pas en cours d'exécution, l'authentification Kerberos n'est pas possible. Par défaut, le service est configuré pour se lancer automatiquement au démarrage de l'ordinateur.

Pour vérifier que le service Hôte de services Microsoft Exchange est démarré

  1. Cliquez sur Démarrer, entrez services.msc puis sélectionnez services.msc dans la liste.

  2. Dans la fenêtre Services, repérez le service Hôte de services Microsoft Exchange dans la liste des services.

  3. L'état du service doit être En cours d'exécution. Si l'état n'est pas En cours d'exécution, cliquez avec le bouton droit sur le service, puis sur Démarrer.

Vérifier Kerberos à partir du serveur exécutant les services d’accès au client

Lorsque vous avez configuré les informations d’identification ASA sur chaque serveur exécutant les services d’accès au client, vous avez exécuté l’applet de commande Set-ClientAccessServer . Après avoir exécuté cette applet de commande, vous pouvez utiliser les journaux pour vérifier que les connexions Kerberos ont réussi.

Vérifiez que Kerberos fonctionne correctement à l’aide du fichier journal HttpProxy

  1. Dans un éditeur de texte, accédez au dossier où est stocké le journal HttpProxy. Par défaut, le journal est stocké dans le dossier suivant :

    %ExchangeInstallPath%\Logging\HttpProxy\RpcHttp

  2. Ouvrez le fichier journal le plus récent, puis recherchez le mot Negotiate. La ligne du fichier journal ressemble à l'exemple suivant :

    2014-02-19T13:30:49.219Z,e19d08f4-e04c-42da-a6be-b7484b396db0,15,0,775,22,,RpcHttp,mail.corp.tailspintoys.com,/rpc/rpcproxy.dll,,Negotiate,True,tailspin\Wendy,tailspintoys.com,MailboxGuid~ad44b1e0-e44f-4a16-9396-3a437f594f88,MSRPC,192.168.1.77,EXCH1,200,200,,RPC_OUT_DATA,Proxy,exch2.tailspintoys.com,15.00.0775.000,IntraForest,MailboxGuidWithDomain,,,,76,462,1,,1,1,,0,,0,,0,0,16272.3359,0,0,3,0,23,0,25,0,16280,1,16274,16230,16233,16234,16282,?ad44b1e0-e44f-4a16-9396-3a437f594f88@tailspintoys.com:6001,,BeginRequest=2014-02-19T13:30:32.946Z;BeginGetRequestStream=2014-02-19T13:30:32.946Z;OnRequestStreamReady=2014-02-19T13:30:32.946Z;BeginGetResponse=2014-02-19T13:30:32.946Z;OnResponseReady=2014-02-19T13:30:32.977Z;EndGetResponse=2014-02-19T13:30:32.977Z;,PossibleException=IOException;
    

    Si vous voyez que la valeur AuthenticationType est Negotiate, le serveur crée correctement des connexions authentifiées Kerberos.

Conservation des informations d'identification du compte ASA

Si vous devez actualiser régulièrement le mot de passe sur les informations d’identification ASA, suivez les étapes de configuration des informations d’identification ASA décrites dans cet article. Envisagez la création d'une tâche planifiée pour effectuer une mise à jour régulière du mot de passe. Veillez à contrôler la tâche planifiée pour vérifier le changement en temps opportun du mot de passe et éviter toute erreur d'authentification.

Désactivation de l'authentification Kerberos

Pour configurer vos serveurs qui exécutent des services d’accès au client afin d’arrêter d’utiliser Kerberos, dissociez ou supprimez les SPN des informations d’identification ASA. Si les SPN sont supprimés, l’authentification Kerberos ne sera pas tentée par vos clients, et les clients configurés pour utiliser l’authentification Negotiate utiliseront NTLM à la place. Les clients configurés pour utiliser uniquement Kerberos ne pourront pas se connecter. Une fois les spN supprimés, vous devez également supprimer le compte.

Pour supprimer les informations d'identification ASA

  1. Ouvrez Exchange Management Shell sur un serveur Exchange 2016 ou Exchange 2019, puis exécutez la commande suivante :

    Set-ClientAccessServer CAS-1 -RemoveAlternateServiceAccountCredentials
    
  2. Bien que vous n'ayez pas à le faire immédiatement, vous devrez dans tous les cas redémarrer tous les ordinateurs clients pour effacer le cache de ticket Kerberos de l'ordinateur.