Formation Libérez tout le potentiel de Microsoft ADFS
Au travers de ce tutoriel, nous allons mettre en place l'authentification ADFS lors de l'accĂšs Ă Outlook Web App (OWA) et l'Exchange Control Panel (ECP).
La connexion ne se basera plus sur le formulaire d'authentification OWA et ECP mais désormais depuis le portail ADFS. Egalement, il sera avec ADFS possible d'ajouter une authentification MFA afin de mieux centraliser et sécuriser l'authentification du client.
Ă noter cependant que l'authentification ADFS impactera uniquement les WebUI OWA et ECP, pas l'ActiveSync et l'Auto Discover.
Au sein de ce tutoriel, nous allons utiliser trois serveurs qui seront répartis avec les rÎles suivants :
Avant toute chose, nous devons récupérer les FQDN des serveurs Exchange et de l'ADFS afin de les utiliser ensuite.
Ouvrez l'invite de commande "'Exchange Management Shell". On souhaite récupérer deux informations :
On récupÚre l'adresse externe de l'OWA du serveur Exchange :
[PS] C:\> (Get-OwaVirtualDirectory).ExternalUrl.AbsoluteUri
On récupÚre l'adresse externe de l'ECP du serveur Exchange :
[PS] C:\> (Get-EcpVirtualDirectory).ExternalUrl.AbsoluteUri
Dans un premier temps, nous allons récupérer les informations nécessaires sur l'ADFS. Puis nous allons ensuite lancer une série d'instructions dans un script PowerShell qui nous permettra de créer les différentes approbations de partie de confiance.
On va récupérer certains éléments afin de compléter notre installation.
Dans un premier temps, on récupÚre le FQDN de l'ADFS :
[PS] C:\> Get-ADFSProperties | Select-Object HostName, FederationPassiveAddress
Vous devriez obtenir quelque chose du genre : https://<ADFS>.domain.fr/adfs/ls/
On doit maintenant préparer le serveur ADFS. AprÚs avoir récupérés nos FQDN publics et accessibles depuis Internet et en interne, depuis notre serveur Exchange, nous allons créer un script afin de créer une nouvelle authentification de confiance pour le serveur Exchange sur le serveur ADFS.
Ainsi, voici le script de configuration à exécuter sur le serveur ADFS afin de préparer l'authentification du serveur Exchange :
## --- VARIABLES --- ##
# On rĂ©cupĂšre le chemin absolu externe de lâOWA du serveur Exchange
[string]$ExchangeOWAURL = 'https://<EXCHANGE_FQDN>/owa'
# On rĂ©cupĂšre le chemin absolu externe de lâECP du serveur Exchange
[string]$ExchangeECPURL = 'https://<EXCHANGE_FQDN>/ecp'
## ----------------- ##
# CrĂ©ation dâune nouvelle rĂšgle Claims : âAllowAllAuthzRuleâ
[string]$IssuanceAuthorizationRules = '@RuleTemplate = "AllowAllAuthzRule"
=> issue(Type = "http://schemas.microsoft.com/authorization/claims/permit",
Value = "true");'
# CrĂ©ation dâune nouvelle rĂšgle Claims : âActiveDirectoryUserSIDâ
[string]$IssuanceTransformRules = '@RuleName = "ActiveDirectoryUserSID"
c:[Type == "http://schemas.microsoft.com/ws/2008/06/identity/claims/windowsaccountname", Issuer == "AD AUTHORITY"]
=> issue(store = "Active Directory", types = ("http://schemas.microsoft.com/ws/2008/06/identity/claims/primarysid"), query = ";objectSID;{0}", param = c.Value);
@RuleName = "ActiveDirectoryUPN"
c:[Type == "http://schemas.microsoft.com/ws/2008/06/identity/claims/windowsaccountname", Issuer == "AD AUTHORITY"]
=> issue(store = "Active Directory", types = ("http://schemas.xmlsoap.org/ws/2005/05/identity/claims/upn"), query = ";userPrincipalName;{0}", param = c.Value);'
# Application des rÚgles créées
# ~~ RĂšgle pour l'OWA
Add-ADFSRelyingPartyTrust -Name 'Outlook Web App' -Enabled $true -Notes ('This is a trust for {0}' -f $ExchangeOWAURL) -WSFedEndpoint $ExchangeOWAURL -Identifier $ExchangeOWAURL -IssuanceTransformRules $IssuanceTransformRules -IssuanceAuthorizationRules $IssuanceAuthorizationRules
# ~~ RĂšgle pour l'ECP
Add-ADFSRelyingPartyTrust -Name 'Exchange Admin Center (EAC)' -Enabled $true -Notes ('This is a trust for {0}' -f $ExchangeECPURL) -WSFedEndpoint $ExchangeECPURL -Identifier $ExchangeECPURL -IssuanceTransformRules $IssuanceTransformRules -IssuanceAuthorizationRules $IssuanceAuthorizationRules
On souhaite récupérer l'empreinte du certificat de signature des jetons ADFS :
[PS] C:\> Get-ADFSCertificate Token-Signing | Select-Object Thumbprint
Il s'agit ici de récupérer le certificat de signature des jetons ADFS (Token-Signing) et non le certificat de l'interface Web du portail ADFS ! Vous aurez sinon vous obtiendrez l'erreur suivante sur l'Exchange : "WrongAudienceUriOrBadSigningCert" lors de la phase d'authentification.
Depuis la console ADFS, récupérez le certificat de signature dans le dossier Certificat > Signature de jetons. Double cliquer sur le certificat, puis l'onglet Détails > Empreinte numérique.
Il sera nécessaire d'importer la clé publique du certificat (.crt
) sur le serveur Exchange (le certificat doit ĂȘtre trustĂ© sur l'Exchange). Vous aurez sinon vous obtiendrez l'erreur suivante sur l'Exchange : "WrongAudienceUriOrBadSigningCert" lors de la phase d'authentification.
Enfin, nous devons préparer le serveur Exchange afin d'autoriser l'authentification depuis l'ADFS. AprÚs avoir récupérés nos FQDN publics et accessibles depuis Internet et en interne, et aprÚs avoir récupéré le FQDN du serveur ADFS, nous devons rediriger toute l'authentification directement sur le serveur ADFS.
Plus précisément, pour tout nouveau client, en souhaitant joindre le FQDN du serveur Exchange, celui-ci sera systématiquement redirigé sur le portail ADFS. Et aprÚs avoir renseigné ses informations d'identification, il sera redirigé sur le Webmail Outlook.
Ainsi, voici le script de configuration à exécuter sur le serveur Exchange :
## --- VARIABLES --- ##
# On rĂ©cupĂšre le chemin absolu externe de lâOWA du serveur Exchange
[string]$ExchangeOWAURL = 'https://<EXCHANGE_FQDN>/owa'
# On rĂ©cupĂšre le chemin absolu externe de lâECP du serveur Exchange
[string]$ExchangeECPURL = 'https://<EXCHANGE_FQDN>/ecp'
# On spécifie le FQDN du serveur ADFS
[string]$ADFSURL = 'https://<ADFS_FQDN>/adfs/ls/'
## ----------------- ##
# On récupÚre le certificat de signature Thunbprint sur le serveur ADFS.
# $>Get-ADFSCertificate Token-Signing | Select-Object Thumbprint
[string]$AdfsSignCertThumbprint = '<YOUR_TS_THUMBPRINT>'
# On construit un tableau avec nos deux URL du serveur Exchange
$uris = @($ExchangeOWAURL, $ExchangeECPURL)
# On dĂ©ploie le certificat de lâADFS sur lâorganisation Exchange
Set-OrganizationConfig -AdfsIssuer $ADFSURL -AdfsAudienceUris $uris -AdfsSignCertificateThumbprint $AdfsSignCertThumbprint
# On configure lâauthentification exclusivement rĂ©alisĂ©e par lâADFS
Get-EcpVirtualDirectory | Set-EcpVirtualDirectory -AdfsAuthentication $true -BasicAuthentication $false -DigestAuthentication $false -FormsAuthentication $false -WindowsAuthentication $false
Get-OwaVirtualDirectory | Set-OwaVirtualDirectory -AdfsAuthentication $true -BasicAuthentication $false -DigestAuthentication $false -FormsAuthentication $false -WindowsAuthentication $false -OAuthAuthentication $false
En cas de problÚme, vous pouvez si vous le souhaitez rétablir l'authentification classique Windows sur le serveur Exchange, permettant ainsi de se connecter directement depuis le formulaire OWA.
Pour cela, en PowerShell, exécutez le commandes suivantes :
Get-OwaVirtualDirectory | Set-OwaVirtualDirectory -AdfsAuthentication $false -BasicAuthentication $true -DigestAuthentication $true -FormsAuthentication $true -WindowsAuthentication $true -OAuthAuthentication $false
Get-EcpVirtualDirectory | Set-EcpVirtualDirectory -AdfsAuthentication $false -BasicAuthentication $true -DigestAuthentication $true -FormsAuthentication $true -WindowsAuthentication $true
En souhaitant joindre le serveur Echange, nous sommes directement redirigé sur le portail ADFS :
Nous souhaitons nous connectons sur le serveur ADFS et si la connexion est OK, nous sommes redirigé sur l'OWA :
En essayant de se déconnecté, l'ADFS nous a bien déconnecter de notre session. La connexion est applicable sur toutes les applications utilisant l'ADFS.
Il est donc trĂšs important d'importer le fichier .crt (certificat public) "Token-Signing" du serveur ADFS sur votre serveur Exchange, sinon l'authentification ne fonctionnera pas !
Le message d'erreur que vous avez au moment de l'authentification avec le serveur ADFS est le suivant :
Vous devez installer le certificat sur le serveur Exchange. Pour cela, exportez en fichier .cer
(Base64) le certificat "Token-Signing" et réalisez son installation.
Ouvrez le fichier et cliquez sur "Installer le certificat" :
On souhaite importer le certificat sur l'ordinateur local :
Sélectionnez "Placer tous les certificats dans le magasin suivant". Nous allons stocker ce certificat dans le magasin "Autorités de certification racine de confiance" :
AprÚs avoir cliqué sur suivant, validez l'installation du certificat :
Le certificat est bien vérifié et installé sur le serveur. Il est donc approuvé :
Et voilà ! Nous avons vu dans un premier temps comment nous avons récupérés les différents sur les serveurs respectifs afin de procéder à une authentification ADFS sur l'OWA et l'ECP (interfaces Web) d'un serveur Exchange.
Nous avons ainsi enregistrĂ©s deux approbations de partie de confiance pour les deux accĂšs afin d'ajouter notre application au serveur ADFS. Un script de configuration PowerShell a ainsi automatisĂ© nos actions. Ă noter cependant que les actions doivent ĂȘtres rĂ©alisĂ©es sur tous les serveurs si vous disposez d'un cluster ADFS, de mĂȘme que pour Exchange.
Enfin, en essayant de se connecter avec un compte, celui-ci est redirigé vers le serveur ADFS et une fois l'authentification vérifiée, nous sommes redirigés sur l'interface Outlook Web App
Crédits :