Blog de Florent Appointaire

Blog sur les technologies Microsoft (Windows Server, System Center, Azure, Windows Azure Pack/Azure Stack, etc;)

[ADFS] Authentification avec un certificat

Ayant marre d'écrire mon nom d'utilisateur/mot de passe à chaque fois, j'ai décidé d'implémenter l'authentification avec un certificat. Je vais donc vous expliquer comment faire. Vous pouvez également utiliser ce tutoriel pour le MFA (Multi Factor Authentication). Seul la configuration ADFS changera.

Pour commencer, vous devez avoir une PKI d'entreprise (vous pouvez lire cette très bonne série d'articles de mon collègue Romain :) ) et un ou plusieurs serveurs ADFS fonctionnelles.

Une fois que vous avez ces prérequis, vous pouvez commencer. La première chose à faire est de déployer un template dans votre PKI. Ce template, de type Client Authentication, vous donnera la possibilité de vous authentifier, via un certificat. Allez dans la console Certification Authority et cliquez sur Certificate Template puis Manage. Dupliquez le certificat User. Je vais lui donner le nom de User_adfs:

Donnez ensuite la possibilité de faire un Autoenroll à un groupe, ou aux utilisateurs authentifiés:

Retournez sur la console Certification Authority et cliquez sur Certificate Template puis New > Certificate Template to issue et choisissez votre certificat User_adfs pour publier votre certificat:

Nous allons maintenant activer l'auto enrollement via GPO. Comme ça, dès que un utilisateur va se logguer sur sa session pour la première fois, un certificat lui sera généré. Modifiez votre GPO de base, et allez dans User Configuration > Policies > Windows Settings > Security Settings > Public Key Policies. Activez la GPO avec le paramètre Auto-Entollment et modifiez la comme dans ma capture:

Si vous faites gpupdate /force sur un serveur/laptop avec votre utilisateur actuel, un certificat sera généré:

La partie autoenrollment fonctionne donc correctement. La prochaine étape est de modifier l'ADFS pour utiliser ce certificat. Mon ADFS étant en server core, je vais faire ces modifications en PowerShell. 

Commençons par ouvrir le port 49443 en TCP IN sur nos serveurs WAP, si vous en avez, sinon, sur votre ADFS. C'est un prérequis pour utiliser l'authentification via certificat: https://blogs.technet.microsoft.com/pauljones/2014/06/10/adfs-needs-port-49443/

Je vais exécuter les commandes suivantes, pour rajouter l'authentification via certificat disponible, en plus de la partie Windows authentication, etc. La première partie de la commande modifie pour les utilisateurs qui sont dans l'intranet, et l'autre depuis Internet. Je redémarre ensuite le service et vérifie que les paramètres sont bien appliqués:

Set-AdfsGlobalAuthenticationPolicy -PrimaryIntranetAuthenticationProvider CertificateAuthentication, WindowsAuthentication, FormsAuthentication, MicrosoftPassportAuthentication
Set-AdfsGlobalAuthenticationPolicy -PrimaryExtranetAuthenticationProvider CertificateAuthentication, FormsAuthentication, MicrosoftPassportAuthentication
Restart-Service adfssrv
Get-AdfsGlobalAuthenticationPolicy

N'oubliez pas que vous pouvez également faire ceci pour le MFA.

Je vais maintenant lancer une application qui utilise mon ADFS, Windows Azure Pack. Comme vous pouvez le voir, je peux m'authentifier avec un utilisateur/mot de passe ou avec un certificat:

Si je choisis l'option avec certificat, mon store personel avec les certificats est listé, et je peux choisir le certificat qui convient:

Après l'avoir choisi, je suis connecté, avec le bon compte utilisateur associé à ce certificat:

Enjoy :)

Facebook Like
Anonymous