Mise en place de la fédération dans Office 365 avec ADFS

Bannière Azure Active Directory

Aujourd’hui, je vous propose de voir ensemble comment mettre en place ADFS pour permettre l’identification au sein d’Office 365 et Azure Active Directory via la fédération des identités.

Introduction

L’objectif étant de pouvoir permettre à vos utilisateurs de s’authentifier sans avoir à partager le hash des mots de passe avec Microsoft (Password Hashed Synchronization).

Je ne vais pas justifier l’utilisation de l’option Password Hashed Synchronization… Pour moi, c’est nécessairement la solution la plus rapide à mettre en place et surtout la plus simple à gérer en termes de maintien en conditions opérationnelles.

Vous allez voir que la solution fédérée avec ADFS est plus lourde.

Notez que même si je vais détailler la procédure étape par étape, l’AAD Connect et les solutions Cloud de Microsoft évoluent très rapidement. Donc au moment où vous lirez cet article il est possible que certaines fenêtres soient différentes. Si vous avez besoin d’aide, utilisez la zone commentaires !

Globalement, pour un cas de Production, l’infrastructure minimum à mettre en place est équivalente au diagramme qui suit…

Diagramme pour infrastructure type de Fédération des Identités entre Cloud et On-Prem
Diagramme pour infrastructure type de Fédération des Identités entre Cloud et On-Prem

Si on détaille un peu ce qu’il se passe :

  • Nous aurons besoin de définir une URL d’accès qui permettra de s’identifier pour accéder aux services. Dans mon cas j’ai choisi : login.akril.co.
    • Cette URL doit être résolue depuis l’extérieur de votre réseau. Vous devez donc créer une entrée A auprès de votre registrar. L’adresse IP correspond à une IP publique associée à une appliance et/ou Load Balancer qui permettra de rediriger vers nos 2 serveurs ADFS WAP ou proxy ADFS. C’est par là que vos utilisateurs “externes” accéderont au service lorsqu’ils ne sont pas dans votre LAN.
    • Les 2 serveurs WAP sont au sein de votre infrastructure mais comme ils sont en DMZ ; ils ne sont pas joint au domaine (WORKGROUP) pour des raisons de sécurité.
    • Vous avez besoin de 2 serveurs pour assurer la haute disponibilité. C’est eux qui sont en frontal des 2 serveurs ADFS afin d’éviter de mettre des serveurs membres – qui plus est ADFS – directement en DMZ.
  • Cette URL d’accès doit également être connue au sein de votre LAN. Dans ce cas, elle pointera également vers un VIP interne qui assurera la haute disponibilité et redirigera vers vos 2 serveurs ADFS.
    • Dans le cas d’un accès en interne, vous ne passez donc pas les serveurs WAP mais vous vous identifiez directement auprès des serveurs ADFS.
    • L’ADFS vérifiera votre identité avec l’aide de l’Active Directory (DC).

Comme vous pouvez le voir, si vous optez pour ce type d’infrastructure c’est plus lourd : 2 serveurs ADFS, 2 serveurs WAP, Load Balancer (et donc appliance réseau pro) – en plus des DC et de l’AAD Connect dont vous disposez déjà.

En effet, dans ce scénario l’infrastructure ADFS + WAP devient critique car si vos 2 serveurs WAP et/ou vos 2 serveurs ADFS sont down – il devient alors impossible d’accéder à vos services Cloud.

Dans mon scénario, j’effectue ce design en environnement de Lab, j’ai donc réduit à 1 serveur ADFS et 1 serveur WAP. Dans ce cas, l’infrastructure cible sera donc la suivante :

Mon scénario (un peu réduit par souci de capacity planning)
Mon scénario (un peu réduit par souci de capacity planning)

D’où l’intérêt de bien comprendre techniquement comment ça se passe car si vous déployez ce type d’infrastructure au sein de votre Production, il est possible que vous soyez sur une infrastructure multi-sites et ayez même besoin de davantage de serveurs ADFS, Proxy. 😉

Certificat SSL pour votre ADFS

Qui dit authentification dit mot de passe… Et dans ce cas, vous vous doutez que notre URL d’accès sera évidemment sécurisée en https. Vous devez donc disposer d’un certificat SSL associé à l’URL de connexion que vous souhaitez créer. Non, pas de certificat auto-signé (au cas où vous auriez eu la question). 🙂

Commencez par générer un CSR depuis votre IIS Manager sur votre serveur ADFS (ou n’importe quel autre serveur).

Génération de votre CSR
Génération de votre CSR

Ne vous trompez pas sur le Common Name qui doit correspondre exactement à l’URL que vous souhaitez protéger.

Certificate Request (CSR)
Certificate Request (CSR)

Une fois que vous disposez de votre CSR, vous pouvez demander à votre fournisseur de créer un certificat SSL.

Cette partie dépend évidemment de votre fournisseur. Pour ma part, j’utilise DigitCert dont je vous avais déjà parlé dans un ancien article.

Une fois que c’est fait, vous devez disposer de un ou plusieurs certificats. Ces derniers doivent être ajoutés à l’ensemble des magasins sur votre serveur ADFS, WAP et AAD Connect.

Certificats SSL
Certificats SSL

Selon votre fournisseur, vous aurez peut-être plusieurs certificats à ajouter au sein de votre magasin.

Magasins de certificats
Magasins de certificats

Notre certificat est prêt.

Installation et configuration du serveurs ADFS

Provisionnez une nouvelle machine virtuelle et intégrez là au sein de votre domaine Active Directory. Depuis le Server Manager, installez le rôle ADFS puis démarrez l’assistant de configuration.

Création de votre premier serveur ADFS
Création de votre premier serveur ADFS
Création de votre premier serveur ADFS
Création de votre premier serveur ADFS
Choix de l'URL et du certificat
Choix de l’URL et du certificat

Si vous avez bien importé votre certificat SSL, vous devriez avoir le nom de l’URL que l’on se prépare à configurer directement dans le menu déroulant. Il ne reste plus qu’à la sélectionner.

Vous pouvez également choisir un nom pour la page ADFS de votre organisation (purement décoratif).

Compte de service ou gMSA si possible
Compte de service ou gMSA si possible

Vous devez maintenant définir un compte de service pour votre serveur ADFS. Si vous en avez la possibilité, je vous encourage à utiliser un compte de type gMSA qui est bien meilleur en termes de sécurité. Si ce n’est pas possible dans votre environnement, vous devrez créer un compte de service standard avec login + password (à l’ancienne).

Création de votre base de données
Création de votre base de données

Je vous encourage également à choisir une base de données de type WID – Windows Internal Database. Cela convient même pour les environnements de Production. La base de données dédiée SQL Server ne se justifie que pour certains cas rares d’environnements. Plus d’infos sur le lien suivant (nombre de serveurs ADFS, nombre d’applications, etc.).

Récapitulatif de la configuration
Récapitulatif de la configuration
Contrôle des pré-requis
Contrôle des pré-requis
Fin de l'installation et de la configuration de votre serveur ADFS
Fin de l’installation et de la configuration de votre serveur ADFS

Voilà, globalement c’est terminé pour votre serveur ADFS. Il n’y a rien de particulier à faire en plus sur ce composant. Si vous disposiez d’un 2nd serveur ADFS, vous devrez reprendre l’ensemble de l’assistant et choisir tout au début l’option Add a federation server to a federation server farm.

Création de votre serveur ADFS Proxy ou WAP (Web Application Proxy)

Comme expliqué précédemment, c’est ce serveur WAP qui va faire le lien avec “le monde extérieur” et votre serveur ADFS car on ne souhaite pas publier ce dernier sur Internet.

Le serveur WAP est donc configuré en WORKGROUP. Il n’est pas serveur membre de votre domaine Active Directory.

Installez le rôle Web Application Proxy depuis le Server Manager. Si vous utilisez Windows Server 2019, le rôle est désormais un peu caché… 😉

Démarrez le Server Manager, installez le Server Role appelé : Remote Access. Puis dans les Role Services, vous aurez alors accès à Web Application Proxy.

Installation du rôle Web Application Proxy
Installation du rôle Web Application Proxy

Une fois que l’installation est terminée, nous allons passer à la configuration. Veillez à bien être connecté avec un compte Local Administrateur.

Si ce n’est pas déjà fait, n’oubliez pas que vous devez disposer du certificat SSL également sur ce serveur ! 🙂

Depuis le Menu Démarrer, ouvrez l’outil Remote Access Management Console puis lancez l’assistant de configuration.

Remote Access Management Console
Remote Access Management Console
Remote Access Management Console
Remote Access Management Console

Définissez le nom de votre URL de connexion ainsi qu’un compte Local Administrator.

Choix de l'URL de connexion
Choix de l’URL de connexion

Si votre certificat est correctement installé, vous devriez pouvoir retrouver dans le menu déroulant le nom de votre URL. Il ne reste qu’à cliquer sur Next.

Récapitulatif avant configuration
Récapitulatif avant configuration
Fin de la configuration de votre serveur WAP
Fin de la configuration de votre serveur WAP

La configuration est terminée.

Vous pouvez également vérifier que votre serveur WAP et ADFS parviennent bien à communiquer en vérifiant le statut depuis la console Remote Access Management Console. Tout devrait être vert.

Status de votre serveur WAP
Status de votre serveur WAP

Création des entrées DNS (pour l’interne et l’externe)

Comme je l’ai déjà expliqué précédemment, notre URL d’accès doit être accessible depuis l’interne et l’externe de votre infrastructure.

  • Pour l’interne, il nous suffit de créer une entrée DNS directement depuis le DNS Manager d’un Domain Controller. Le champs A devra pointer sur votre serveur ADFS (ou bien sur la VIP associée si vous disposez de 2+ serveurs ADFS).
Création d'une entrée DNS interne (sur un DC)
Création d’une entrée DNS interne (sur un DC)
Création d'une entrée DNS interne (sur un DC)
Création d’une entrée DNS interne (sur un DC)

Dans mon cas, je dispose d’un seul serveur ADFS, je fais donc pointer mon login.akril.co vers l’adresse IP interne de mon serveur ADFS.

  • Pour l’externe, je dois créer une nouvelle entrée de type A dans mes DNS publiques. Dans mon cas, c’est Google Domains. Elle pointera sur l’adresse IP publique associée à mon réseau et je vais ensuite rediriger le flux 443/TCP depuis l’extérieur vers mon serveur WAP (10.0.0.10) en interne. Ce dernier redirigera ensuite le tout vers le serveurs ADFS… ça va vous suivez ? 🙂
Création d'une entrée DNS publique auprès de votre registrar
Création d’une entrée DNS publique auprès de votre registrar

Configuration de votre serveur AAD Connect

Important : les étapes décrites plus haut permettent de déployer manuellement les composants ADFS et WAP. Cela étant, dans les versions les plus récentes d’AAD Connect, l’assistant peut réaliser à distance la configuration des serveurs ADFS et WAP à condition d’avoir tous les pré-requis. Les étapes que nous allons présenter ci-dessous peuvent donc être redondantes dans certains cas.

Dans mon cas mon serveur AAD Connect était actuellement configuré en mode Password Hashed Synchronization. Nous allons donc maintenant configurer notre AAD Connect afin qu’il ait conscience de notre infrastructure fédérée.

Attendez que votre dernière synchronisation soit terminée puis démarrez l’assistant AAD Connect.

Assistant AAD Connect
Assistant AAD Connect

Choisissez l’option Manage federation.

Assistant AAD Connect
Assistant AAD Connect

Vous ne devriez avoir que l’option Update SSL certificate. Suivez les étapes décrites ci-dessous.

Compte Admin pour se connecter à votre ADFS
Compte Admin pour se connecter à votre ADFS
Ajout du serveur ADFS
Ajout du serveur ADFS

Vous pouvez saisir manuellement le nom court ou long de votre serveur ADFS ou bien utiliser le bouton Browse pour qu’il soit détecté par votre AAD Connect.

Ajout du serveur ADFS
Ajout du serveur ADFS

Normalement, vous pouvez passer sans rien changer sur l’option Proxy servers car le serveur WAP n’est pas géré par le serveur AAD Connect.

Ajout du certificat
Ajout du certificat

Dans mon cas, je n’ai pas pu utiliser le format de certificat délivré par Digitcert via l’assistant d’AAD Connect. J’ai donc réalisé un export classique depuis le serveur ADFS. Le nouveau fichier généré porté l’extension pfx et j’ai pu le charger dans l’assistant AAD Connect.

Test de connectivité
Test de connectivité

Le certificat est confirmé comme étant valide.

Fin de la configuration
Fin de la configuration

La configuration est terminée.

Récapitulatif de la configuration fédérée
Récapitulatif de la configuration fédérée

Si besoin, vous pouvez relancer l’assistant d’AAD Connect pour voir un résumé de la configuration en mode Fédération (URL, certificat, etc.).

Activer la fédération via votre ADFS

Tous les éléments sont en place pour nous permettre de nous identifier en mode fédérée auprès de O365 et des services Cloud Microsoft. Il nous reste maintenant à activer notre domaine en mode fédéré pour que cela fonctionne.

Depuis le serveur AAD Connect, exécutez maintenant les quelques commandes PowerShell ci-dessous (à adapter à votre cas bien entendu) :

Connect-MsolService
Set-MsolADFSContext -Computer akl-adfs.akril.cloud
Convert-MsolDomainFederated -domain akril.co
Remplacez les noms en fonction de votre infrastructure
Remplacez les noms en fonction de votre infrastructure

Lorsque vous devrez vous identifier, utilisez un compte “pure-cloud” et non pas un compte synchronisé. Identifiez-vous avec un compte user@tenant.onmicrosoft.com.

Vous devriez avoir le retour suivant :

Confirmation PowerShell
Confirmation PowerShell

C’est terminé ! 🙂

Vérifier et tester la configuration

Avant de tester, sachez que vous pouvez vérifier que votre domaine est désormais fédéré depuis le portail Azure Active Directory, AAD Connect.

Statut Fédération depuis portail Azure Active Directory
Statut Fédération depuis portail Azure Active Directory

Si vous aviez bien ouvert les flux (depuis l’extérieur vers votre serveur WAP, 443/TCP), alors vous pouvez tenter de vous identifier en accédant à portal.office.com ou au portail Azure. Une fois votre adresse email saisie, vous devriez être redirigé vers votre page ADFS pour finaliser l’authentification. Si elle est validée, vous serez ensuite redirigé vers le service désiré. 🙂

Test d'authentification en mode fédéré avec ADFS
Test d’authentification en mode fédéré avec ADFS

C’est terminé ! 😉

Vous pouvez désormais vous identifier sans partager avec Microsoft la version hashé de vos mots de passe. Et ajoutons à cela que cette ferme ADFS peut être utilisée pour de nombreux autres besoins… 🙂

Si vous n’avez pas obtenu le résultat souhaité, n’hésitez pas à me solliciter via les commentaires.