Archives de catégorie : ADFS 4.0

Séance de Cluedo avec ADFS : Authentification ADFS en boucle sur Office 365

On est quelques un à s’être cassé les dents dessus. Le fameux cas ou quoi que l’on fasse nos utilisateurs de services fédérés avec la solution ADFS ne peuvent pas s’authentifier sur Office 365. C’est un cas que l’on peut reproduire avec toutes les versions d’ADFS. En fait, nos utilisateurs peuvent s’authentifier autant qu’ils le veulent, ça les ramène toujours à la mire d’authentification.

clip_image001

Sur ce sujet, Microsoft a écrit de beaux articles :

J’ai eu beau retourner ces articles dans tous les sens, impossible de trouver le pourquoi. J’avais juste quelques premières constatations. Quelque chose me disait qu’il y avait un coupable mais impossible de savoir comment le colonel moutarde avait tué dans la bibliothèque. Voilà quelles étaient mes premières constatations :

  • Si on s’authentifie avec un compte qui n’existe pas ou un mot de passe faux, tout se déroule normalement
  • Du point de vue ADFS, cela fonctionne, j’ai bien un Event qui m’indique qu’un ticket Kerberos a été délivré
  • Ça ne concerne pas tous les comptes (sinon c’est pas drôle)

Après quelques heures de recherche, j’ai exclus Office 365 de la liste des suspects, tout comme les F5 BIG-IP et même les serveurs Web Application Proxy. En procédant par élimination, il ne restait donc que les deux serveurs ADFS de ma ferme. Vu que j’arrivais toujours à reproduire le problème en bloquant l’un ou l’autre de mes serveurs ADFS, j’en ai donc conclus que le problème était partagé par les deux serveurs de la ferme. Plus la peine de descendre plus bas, le coupable est nécessairement à cet étage. C’est en observant le fonctionnement de la ferme ADFS avec des comptes pour lesquels cela fonctionne et d’autres pour lesquels cela ne fonctionne pas que j’ai mis le doigt dessus.

Lorsqu’on reprend le processus de fonctionnement d’ADFS de bout en bout, notre serveur ADFS doit interroger l’annuaire Active Directory. Dans mon contexte, mon infrastructure ADFS utilise un compte de service GMSA. Voyant un token ADFS généré, je me disais qu’il n’y avait pas de problème. Erreur de ma part. J’ai fini par comparer les ACL sur les comptes différents comptes et finir par m’apercevoir d’un détail qui me choquait :

clip_image002

Ça a l’air de rien mais cette permission change tout lorsqu’on regarde un utilisateur, ou même un device :

clip_image003

C’est étrange mais quand elle est là (et que le compte de service de votre ferme ADFS n’est pas membre du groupe Admin du domaine), c’est tout de suite beaucoup plus facile pour ADFS de fonctionner normalement. Avec ces quatre permissions magiques, l’authentification ADFS fonctionne comme un charme. Maintenant qui m’a mis sur la voie ? Une fonctionnalité méconnue d’Active Directory : Effective Permissions, un vieux truc introduit avec Windows Server 2008 R2 !

clip_image004

En comparant les permissions effectives entre un compte pour lequel ADFS fonctionnait et un pour lequel la même infrastructure ADFS ne fonctionnait pas, j’ai fini par comprendre qu’il y avait une différence entre mes deux comptes et trouver les permissions manquantes. Accessoirement, ces permissions sont décrites dans le schéma comme on peut le voir ci-dessous :

clip_image005

Vu que le schéma n’avait pas altéré, j’en ait déduit qu’il y a eu modification des permissions au niveau de la racine du domaine (pas glop). Ne restait donc plus qu’à propager les bonnes permissions.

BenoîtS – Simple and secure by design but Business compliant (with disruptive flag enabled)

Découverte d’AD FS Rapid Restore Tool

Avec le Cloud, il y a toujours des passages obligés. Après avoir convaincu les acteurs réticents (DAF, RSI/RSSI), le sujet de l’identité arrive en tête de liste avant même les aspects réseau. Avec en plus le Règlement Général sur la Protection des Données qui pointe le bout de son nez en 2018, autant dire que le sujet identité dans Azure est un sujet Top priorité. Pour un certain nombre de mes clients, cela implique la mise en œuvre d’une infrastructure ADFS (ou la migration) vers une version plus récente (genre Windows Server 2016). C’est pendant l’une de ces migrations que j’ai découvert un outil nommé AD FS Rapid Restore Tool. Au premier abord, j’ai pensé que l’outil était juste un outil de sauvegarde / restauration de configuration ADFS (ce qui est déjà très bien). Une fois installé, cela prend la forme d’un module PowerShell :

Import-Module ‘C:\Program Files (x86)\ADFS Rapid Recreation Tool\ADFSRapidRecreationTool.dll’

Get-Command | where {$_.Source -like « ADFSRapidRecreationTool »}

clip_image001

Si on creuse on peu, on est tout de suite intéressé par certaines fonctionnalités. Normalement, cela devrait vous sauter aux yeux.

clip_image002

En plus, coté mise en œuvre, ça tient en une seule ligne de PowerShell

Backup-ADFS -StorageType “FileSystem” -StoragePath “C:\ADFSBACKUP\” -EncryptionPassword “P@ssw0rd1234” -BackupComment “Clean Install of ADFS (FS)” -BackupDKM

clip_image003

La seule limite, c’est la capacité à exporter la clé privée de votre certificat. La même avec de la bonne volonté, il ne peut pas le faire. Par contre toute la configuration de votre infrastructure ADFS, sa base de données, tout est disponible sous la forme d’un package prêt à l’emploi pour une restauration. C’est bien plus efficace qu’un snapshot ou une sauvegarde du System State.

Là où le process est super intéressant, c’est qu’on peut aussi l’utiliser pour reconfigurer une infrastructure ADFS existante. Dans mon cas, je voulais basculer la base de données depuis des instances Windows Internal Database vers un véritable serveur SQL.

Restore-ADFS -StorageType “FileSystem” -StoragePath “C:\ADFSBACKUP\” -DecryptionPassword “P@ssw0rd1234” -ADFSName “adfs.simplebydesign.fr” -DBConnectionString “data source=fox.adfslab.local;initial catalog=adfsconfiguration;integrated security=true” -GroupServiceAccountIdentifier “ADFSLAB\MSAADFS$”

type c:\users\FOX.ADFSLAB\AppData\Local\ADFSRapidRecreationTool\PostRestore_Instructions01022017-213311.txt

clip_image004

OK, ça ne restaure pas non plus les fournisseurs d’authentification forte tiers (RSA, Gemalto, …). En même temps, je n’en ai pas besoin mon client a commandé l’utilisation de Windows Hello comme mécanisme d’authentification forte à son père noël. La configuration une fois restaurée est immédiatement opérationnelle.

Get-AdfsProperties | select ArtifactDbConnection

clip_image005

Un seul petit bémol à ce niveau, si la collation de votre nouvelle instance SQL n’est pas celle que vous vous attendez mais une version localisée, pensez à personnaliser la chaine de connexion SQL, sinon cela ne fonctionne pas. Pour les « Old School comme moi », avant la migration cela ressemblait à un truc comme cela :

clip_image006

Au passage, il ne faut pas oublier comment cela marche car c’est toujours comme cela qu’on va basculer les serveurs secondaires de la ferme, …

L’outil est compatible Windows Server 2012, Windows 2012 R2, Windows Server 2016, donc tout de suite utilisable pour une migration.

Benoits – Simple and secure by design but Business compliant (with disruptive flag enabled)

ADFS 4.0 – subtilité de la page de logon

Pour finir l’année en beauté, j’ai un ADFS 4.0 à me mettre sous la dent. Une simple évolution du 3.0 inclus dans Windows Server 2012 R2 que je me suis dit. ADFS, je le connais depuis la version 1.1. Ça fait longtemps qu’on se côtoie. Jusqu’à maintenant, dans sa mise en œuvre, j’avais toujours pris l’habitude d’inclure une étape de validation après l’installation du premier serveur ADFS de la ferme, histoire de bien démontrer que ça fonctionne avant de continuer. Là j’ai eu une surprise :

clip_image001

Derrière, dans les logs, j’ai trouvé ça :

clip_image002

Intéressant. C’est en creusant le sujet en passant sous la moquette que j’ai découvert la présence du paramètre EnableIdPInitiatedSignonPage dans les propriétés du Get-AdfsProperties.

clip_image003

Par défaut, la page de la mire de logon est désactivée. C’est con mais quand on veut tester que son infrastructure fonctionne, on commence par le plus basique : La page de logon. Une fois réactivée, cela fonctionne tout de suite mieux.

 

Benoits – Simple and secure by design but Business compliant (with disruptive flag enabled)