<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Active Directory on slash-root.fr</title><link>https://beta.slash-root.fr/tags/active-directory/</link><description>Recent content in Active Directory on slash-root.fr</description><generator>Hugo -- gohugo.io</generator><language>fr-fr</language><lastBuildDate>Thu, 08 Sep 2022 18:51:58 +0200</lastBuildDate><atom:link href="https://beta.slash-root.fr/tags/active-directory/index.xml" rel="self" type="application/rss+xml"/><item><title>Keycloak : Federation d’un annuaire LDAPS (Active Directory)</title><link>https://beta.slash-root.fr/keycloak-federation-dun-annuaire-ldaps-active-directory/</link><pubDate>Tue, 23 Aug 2022 15:10:58 +0200</pubDate><guid>https://beta.slash-root.fr/keycloak-federation-dun-annuaire-ldaps-active-directory/</guid><description>&lt;img src="https://beta.slash-root.fr/keycloak-federation-dun-annuaire-ldaps-active-directory/cover.png" alt="Featured image of post Keycloak : Federation d’un annuaire LDAPS (Active Directory)" /&gt;&lt;p&gt;Cet article a pour but de décrire la mise en place de la fédération d'un annuaire LDAPS (Active Directory) au sein d'un royaume Keycloak.&lt;/p&gt;
&lt;p&gt;Testé avec un domaine Active Directory On-Premises et avec Azure Active Directory.&lt;/p&gt;
&lt;h2 id="contexte-de-linfrastructure"&gt;&lt;a href="#contexte-de-linfrastructure" class="header-anchor"&gt;&lt;/a&gt;Contexte de l&amp;rsquo;infrastructure
&lt;/h2&gt;&lt;p&gt;L'infrastructure sur laquelle je vais m'appuyer est la suivante :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;1 contrôleur de domaine Active Directory (AD DS) avec sa PKI (AD CS) sous Windows Serveur 2019 Standard
&lt;ul&gt;
&lt;li&gt;Domaine : aukfood.lan&lt;/li&gt;
&lt;li&gt;FQDN du contrôleur de domaine : dc01.aukfood.lan&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;1 serveur Keycloak en version 19.0.1
&lt;ul&gt;
&lt;li&gt;Déployé dans docker swarm avec ce stack : &lt;a href="https://beta.slash-root.fr/docker-swarm-stack-keycloak-v19-latest/"&gt;/docker-swarm-stack-keycloak-v19-latest/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;URL : keycloak.example.com&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="certificat-tls"&gt;&lt;a href="#certificat-tls" class="header-anchor"&gt;&lt;/a&gt;Certificat TLS
&lt;/h2&gt;&lt;p&gt;&lt;strong&gt;Note : Les commandes de ce chapitre sont réalisées depuis le serveur hébergeant le conteneur keycloak.&lt;/strong&gt;&lt;/p&gt;
&lt;h3 id="récupération-du-certificat"&gt;&lt;a href="#r%c3%a9cup%c3%a9ration-du-certificat" class="header-anchor"&gt;&lt;/a&gt;Récupération du certificat
&lt;/h3&gt;&lt;p&gt;Pour commencer, il va falloir récupérer le certificat TLS utilisé pour la liaison LDAPS.&lt;/p&gt;
&lt;blockquote&gt;
&lt;ul&gt;
&lt;li&gt;LDAP = Port 389 TCP&lt;/li&gt;
&lt;li&gt;LDAPS = Port 636 TCP&lt;/li&gt;
&lt;/ul&gt;
&lt;/blockquote&gt;
&lt;p&gt;Avec l'utilitaire &lt;code&gt;openssl&lt;/code&gt;, il est possible de tester que la liaison LDAPS est fonctionelle ainsi que de récupérer différentes informations (dont le certificat du serveur) :&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;openssl s_client -connect dc01.aukfood.lan:636
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Voici le retour pour cette infra :&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-shell" data-lang="shell"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;depth&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#ae81ff"&gt;0&lt;/span&gt; CN &lt;span style="color:#f92672"&gt;=&lt;/span&gt; dc01.aukfood.lan
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;---
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Certificate chain
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#ae81ff"&gt;0&lt;/span&gt; s:CN &lt;span style="color:#f92672"&gt;=&lt;/span&gt; dc01.aukfood.lan
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; i:DC &lt;span style="color:#f92672"&gt;=&lt;/span&gt; lan, DC &lt;span style="color:#f92672"&gt;=&lt;/span&gt; aukfood, CN &lt;span style="color:#f92672"&gt;=&lt;/span&gt; aukfood-DC01-CA
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;---
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Server certificate
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;-----BEGIN CERTIFICATE-----
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;MIIHLzCCBRegAwIBAgITTAAAAAczDQgCtUWEjAAAAAAABzANBgkqhkiG9w0BAQsF
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f92672"&gt;[&lt;/span&gt;...&lt;span style="color:#f92672"&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;AniSQdTOnACZrX//9tDg73RV9w&lt;span style="color:#f92672"&gt;==&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;-----END CERTIFICATE-----
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;subject&lt;span style="color:#f92672"&gt;=&lt;/span&gt;CN &lt;span style="color:#f92672"&gt;=&lt;/span&gt; dc01.aukfood.lan
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;issuer&lt;span style="color:#f92672"&gt;=&lt;/span&gt;DC &lt;span style="color:#f92672"&gt;=&lt;/span&gt; lan, DC &lt;span style="color:#f92672"&gt;=&lt;/span&gt; aukfood, CN &lt;span style="color:#f92672"&gt;=&lt;/span&gt; aukfood-DC01-CA
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Copier le &lt;code&gt;Server certificate&lt;/code&gt; commençant par &lt;code&gt;-----BEGIN CERTIFICATE-----&lt;/code&gt; et se terminant par &lt;code&gt;-----END CERTIFICATE-----&lt;/code&gt; dans un fichier &lt;code&gt;server-ldaps.cer&lt;/code&gt; :&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;cat &lt;span style="color:#e6db74"&gt;&amp;lt;&amp;lt;EOF &amp;gt; server-ldaps.cer
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#e6db74"&gt;-----BEGIN CERTIFICATE-----
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#e6db74"&gt;MIIHLzCCBRegAwIBAgITTAAAAAczDQgCtUWEjAAAAAAABzANBgkqhkiG9w0BAQsF
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#e6db74"&gt;[...]
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#e6db74"&gt;AniSQdTOnACZrX//9tDg73RV9w==
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#e6db74"&gt;-----END CERTIFICATE-----
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#e6db74"&gt;EOF&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id="création-du-keystore"&gt;&lt;a href="#cr%c3%a9ation-du-keystore" class="header-anchor"&gt;&lt;/a&gt;Création du keystore
&lt;/h3&gt;&lt;p&gt;Maintenant que le certificat TLS du contrôleur de domaine a été récupéré, il va falloir l'importer dans un keystore.&lt;/p&gt;
&lt;p&gt;Tout d'abord, installer &lt;code&gt;openjdk-11-jre&lt;/code&gt; :&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;sudo apt install openjdk-11-jre
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Puis importer le certificat &lt;code&gt;server-ldaps.cer&lt;/code&gt; dans un keystore nommé &lt;code&gt;keystore.jks&lt;/code&gt; :&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;keytool -import -trustcacerts -alias dc01.aukfood.lan-CA -file server-ldaps.cer -keystore keystore.jks
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Saisir un mot de passe à appliquer au keystore :&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-shell" data-lang="shell"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Entrez le mot de passe du fichier de clés : 
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Ressaisissez le nouveau mot de passe : 
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Vérifier la présence du certificat dans le keystore généré :&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;keytool -list -keystore keystore.jks
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Après avoir entrer le mot de passe du keystore, le certificat est bien présent :&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-shell" data-lang="shell"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Entrez le mot de passe du fichier de clés : 
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Type de fichier de clés : PKCS12
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Fournisseur de fichier de clés : SUN
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Votre fichier de clés d&lt;span style="color:#960050;background-color:#1e0010"&gt;&amp;#39;&lt;/span&gt;accès contient &lt;span style="color:#ae81ff"&gt;1&lt;/span&gt; entrée
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;dc01.aukfood.lan-ca, &lt;span style="color:#ae81ff"&gt;22&lt;/span&gt; août 2022, trustedCertEntry, 
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Empreinte du certificat &lt;span style="color:#f92672"&gt;(&lt;/span&gt;SHA-256&lt;span style="color:#f92672"&gt;)&lt;/span&gt; : 61:EA:83:97:92:&lt;span style="color:#f92672"&gt;[&lt;/span&gt;...&lt;span style="color:#f92672"&gt;]&lt;/span&gt;:B5:59:EE:2C:8A:2D:EA
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id="déclaration-du-keystore"&gt;&lt;a href="#d%c3%a9claration-du-keystore" class="header-anchor"&gt;&lt;/a&gt;Déclaration du keystore
&lt;/h3&gt;&lt;p&gt;Maintenant que le keystore a été généré avec le certificat TLS du contrôleur de domaine, il va falloir le déclarer au sein de Keycloakpour qu'il puisse être exploité.&lt;/p&gt;
&lt;p&gt;Dans la stack keycloak (voir lien en début d'article), un volume &lt;code&gt;conf&lt;/code&gt; est monté pour la persistance des données du répertoire &lt;code&gt;/opt/keycloak/conf&lt;/code&gt; dans le conteneur.&lt;/p&gt;
&lt;p&gt;Envoyer le keystore précédement généré dans le conteneur :&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;docker cp ./keystore.jks &lt;span style="color:#66d9ef"&gt;$(&lt;/span&gt;docker ps -qf name&lt;span style="color:#f92672"&gt;=&lt;/span&gt;keycloak&lt;span style="color:#66d9ef"&gt;)&lt;/span&gt;:/opt/keycloak/conf/
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Puis ajouter les variables suivantes sur la stack de keycloak :&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-shell" data-lang="shell"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;services:
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; app:
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;[&lt;/span&gt;...&lt;span style="color:#f92672"&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; environment:
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;[&lt;/span&gt;...&lt;span style="color:#f92672"&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#75715e"&gt;# Indiquer le mot de passe du keystore&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; KC_SPI_TRUSTSTORE_FILE_FILE: /opt/keycloak/conf/keystore.jks
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; KC_SPI_TRUSTSTORE_FILE_PASSWORD: MotDePasseTresSecure
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;[&lt;/span&gt;...&lt;span style="color:#f92672"&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;blockquote&gt;
&lt;p&gt;Le &lt;code&gt;MotDePasseTresSecure&lt;/code&gt; est celui qui a été indiqué lors de la création du keystore.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Lister les stacks dans docker swarm :&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;docker stack ls
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Identifier l'ID du service docker exécutant&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-shell" data-lang="shell"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;NAME SERVICES ORCHESTRATOR
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;keycloak &lt;span style="color:#ae81ff"&gt;1&lt;/span&gt; Swarm
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;nextcloud &lt;span style="color:#ae81ff"&gt;2&lt;/span&gt; Swarm
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;portainer &lt;span style="color:#ae81ff"&gt;2&lt;/span&gt; Swarm
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;rocketchat &lt;span style="color:#ae81ff"&gt;2&lt;/span&gt; Swarm
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;swarmpit &lt;span style="color:#ae81ff"&gt;4&lt;/span&gt; Swarm
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;traefik &lt;span style="color:#ae81ff"&gt;1&lt;/span&gt; Swarm
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;blockquote&gt;
&lt;p&gt;La stack faisant tourner le keycloack en v19 est nommé &lt;strong&gt;keycloak&lt;/strong&gt; dans ce cluster docker.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Supprimer la stack keycloak :&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;docker stack rm keycloak
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Puis relancer la stack kycloak pour prendre en compte les nouvelles variables d'environnement concernant le truststore :&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;docker stack deploy -c ./keycloak/stack.yml keycloak
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;blockquote&gt;
&lt;p&gt;Le fichier &lt;code&gt;stack.yml&lt;/code&gt; est stocké dans un répertoire nommé &lt;code&gt;keycloak&lt;/code&gt; de mon répertoire courant. A adapter suivant son emplaccement dans le FHS.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="logs"&gt;&lt;a href="#logs" class="header-anchor"&gt;&lt;/a&gt;Logs
&lt;/h2&gt;&lt;p&gt;Avant de passer à la configuration de la fédération de l'annuaire Active Directory via LDAPS à Keycloak, il est important de vérifier et de de s'assurer du bon redémarrage du conteneur.&lt;/p&gt;
&lt;p&gt;Pour cela, lister les services en cours au sein du cluster docker :&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;docker service ls
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Identifier le service adéquat (ici : &lt;strong&gt;keycloak_app&lt;/strong&gt;) :&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-shell" data-lang="shell"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;ID NAME MODE REPLICAS IMAGE PORTS
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;2degmsl8r3se dashy replicated 0/0 lissy93/dashy:latest 
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;7jq3dje5b0t8 keycloak_app replicated 1/1 quay.io/keycloak/keycloak:latest 
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;ubq1dvhwv0st nextcloud_app replicated 1/1 nextcloud:latest 
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;arz4ca4gvfgv nextcloud_mariadb replicated 1/1 mariadb:latest 
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;vr2c7ptq6a8k portainer_agent global 5/5 portainer/agent:latest 
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;h6h5merxg9a2 portainer_portainer replicated 1/1 portainer/portainer-ce:latest 
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;mzsq3uof6c1r rocketchat_mongodb replicated 1/1 bitnami/mongodb:4.4 
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;tmu3kz5n7xq9 rocketchat_rocketchat replicated 1/1 registry.rocket.chat/rocketchat/rocket.chat:latest 
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;kos1zg1wowxi swarmpit_agent global 5/5 swarmpit/agent:latest 
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;gtjs3mikbtaf swarmpit_app replicated 1/1 swarmpit/swarmpit:latest 
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;nx6s2mt19bzx swarmpit_db replicated 1/1 couchdb:2.3.0 
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;n5oq9gx05bnd swarmpit_influxdb replicated 1/1 influxdb:1.7 
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;u7b8rsym5lzp traefik_traefik replicated 1/1 traefik:latest 
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Vérifier la bonne exécution du service en gardant un shell ouvert avec la lecture des logs en temps réel :&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;docker service logs -f keycloak_app
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="configuration-de-la-fédération-ldaps"&gt;&lt;a href="#configuration-de-la-f%c3%a9d%c3%a9ration-ldaps" class="header-anchor"&gt;&lt;/a&gt;Configuration de la fédération LDAPS
&lt;/h2&gt;&lt;p&gt;&lt;strong&gt;Note : A partir de maintenant, la configuration est à effectuer à travers la console web d'administration du service Keycloak.&lt;/strong&gt;&lt;/p&gt;
&lt;h3 id="user-federation"&gt;&lt;a href="#user-federation" class="header-anchor"&gt;&lt;/a&gt;User federation
&lt;/h3&gt;&lt;p&gt;Sélectionner le royaume adéquat ou en créer un nouveau (1), puis se rendre sur &lt;strong&gt;User federation&lt;/strong&gt; (2) :&lt;/p&gt;
&lt;p&gt;&lt;img data-recalc-dims="1" decoding="async" src="01.png" alt="image-20220822202717217" /&gt;&lt;/p&gt;
&lt;p&gt;Ajouter un fournisseur LDAP :&lt;/p&gt;
&lt;p&gt;&lt;img data-recalc-dims="1" decoding="async" src="02.png" alt="image-20220822202902853" /&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Note : Pour les explications des différents champs, leurs fonctions, leurs utilités, etc... qui vont suivre, se référer à cet article que j'ai écris en 2021 sur l'intégration d'un annuaire LDAP (OpenLDAP, huhu) : &lt;a href="https://beta.slash-root.fr/keycloak-integration-ldap-externe/"&gt;/keycloak-integration-ldap-externe/&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Tous les paramètres de synchronisation y sont traités :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Gestion du stockage des utilisateurs&lt;/li&gt;
&lt;li&gt;L'influence du mode &lt;code&gt;Import Users&lt;/code&gt; sur les requêtes LDAP (LDAPS, même combat)&lt;/li&gt;
&lt;li&gt;L'&lt;code&gt;Edit Mode&lt;/code&gt; et ses différents paramètres&lt;/li&gt;
&lt;li&gt;Les types de &lt;code&gt;Vendor&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Les différents champs &lt;code&gt;Users DN&lt;/code&gt; ou &lt;code&gt;Bind DN&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Les configurations possibles pour la synchronisation ainsi que leurs périodicités&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="general-options"&gt;&lt;a href="#general-options" class="header-anchor"&gt;&lt;/a&gt;General options
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;(1) Console display name&lt;/strong&gt; : Entrer un nom afin d'identifier cette fédération d'utilisateurs au sein de Keycloak.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;(2) Vendor&lt;/strong&gt; : Indiquer le type d'annuaire.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;img data-recalc-dims="1" decoding="async" src="03.png" alt="image-20220823052653616" /&gt;&lt;/p&gt;
&lt;h3 id="connection-and-authentication-settings"&gt;&lt;a href="#connection-and-authentication-settings" class="header-anchor"&gt;&lt;/a&gt;Connection and authentication settings
&lt;/h3&gt;&lt;p&gt;&lt;strong&gt;(1) Connection URL&lt;/strong&gt; : Renseigner l'URL de connexion à l'annuaire LDAPS sous la forme &lt;code&gt;ldaps://FQDN_DC:636&lt;/code&gt;. Cette URL doit correspondre au &amp;quot;Common Name&amp;quot; du certificat. Celui-ci peut être identifié lors de l'utilisation de la commande &lt;code&gt;openssl&lt;/code&gt; au début de cet article.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;(2) Use Truststore SPI&lt;/strong&gt; : Indiquer l'utilisation du truststore javax.net.ssl.trustStore (pour le keystore.jks) uniquement pour ldaps.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;(3) Bind DN&lt;/strong&gt; : Indiquer le DistinguishedName de l'utilisateur de l'annuaire qui sera utilisé par Keycloak. Pour le récupérer facilement :&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-powershell" data-lang="powershell"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Get-ADUser UTILISATEUR_AD | FT DistinguishedName
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;strong&gt;(4) Bind credentials&lt;/strong&gt; : Mettre le mot de passe de l'utilisateur indiqué au point précédent.&lt;/p&gt;
&lt;p&gt;&lt;img data-recalc-dims="1" decoding="async" src="04.png" alt="image-20220823062809118" /&gt;&lt;/p&gt;
&lt;p&gt;A noter que pour le moment, il manque des informations dans le paramétrage de la liaison LDAPS. De ce fait, le &amp;quot;Test connection&amp;quot; et le &amp;quot;Test authentication&amp;quot; ne sont pas encore réalisables (Une des différences avec les versions de Keycloak sous Wildfly en version 16 et inférieure).&lt;/p&gt;
&lt;h3 id="ldap-searching-and-updating"&gt;&lt;a href="#ldap-searching-and-updating" class="header-anchor"&gt;&lt;/a&gt;LDAP searching and updating
&lt;/h3&gt;&lt;p&gt;&lt;strong&gt;(1) Edit mode&lt;/strong&gt; : Définir le mode d'édition de l'annuaire.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;(2) Users DN&lt;/strong&gt; : Indiquer le DistinguishedName de l'OU contenant les utilisateurs à fédérer.&lt;/p&gt;
&lt;p&gt;&lt;img data-recalc-dims="1" decoding="async" src="05.png" alt="image-20220823112241929" /&gt;&lt;/p&gt;
&lt;h2 id="tests-et-import-utilisateurs"&gt;&lt;a href="#tests-et-import-utilisateurs" class="header-anchor"&gt;&lt;/a&gt;Tests et import utilisateurs
&lt;/h2&gt;&lt;p&gt;Il est maintenant possible de tester la connexion LDAPS et l'authenfication.&lt;/p&gt;
&lt;p&gt;Ces 2 tests doivent aboutir :&lt;/p&gt;
&lt;p&gt;&lt;img data-recalc-dims="1" decoding="async" src="06.png" alt="image-20220823113054627" /&gt;&lt;/p&gt;
&lt;p&gt;Ensuite, en haut à droite de la page, bien s'assurer que cette fédération soit &lt;strong&gt;enabled&lt;/strong&gt;. Puis dans &lt;strong&gt;action (1)&lt;/strong&gt;, déclencher la &lt;strong&gt;synchronisation (2)&lt;/strong&gt; de tous les utilisateurs :&lt;/p&gt;
&lt;p&gt;&lt;img data-recalc-dims="1" decoding="async" src="07.png" alt="image-20220823113544319" /&gt;&lt;/p&gt;
&lt;p&gt;L'importation des utilisateurs aboutie :&lt;/p&gt;
&lt;p&gt;&lt;img data-recalc-dims="1" decoding="async" src="09.png" alt="image-20220823113707564" /&gt;&lt;/p&gt;
&lt;p&gt;Dans les utilisateurs du royaume Keycloak, je retrouve bien les utilisateurs contenus dans l'OU définit dans la fédération.&lt;/p&gt;
&lt;h2 id="mappers"&gt;&lt;a href="#mappers" class="header-anchor"&gt;&lt;/a&gt;Mappers
&lt;/h2&gt;&lt;p&gt;Dans ce contexte, l'utilisateur &amp;quot;Julien LOUIS&amp;quot;, se retrouve avec un &lt;strong&gt;username&lt;/strong&gt; contenant des espaces. Cela est dû au faites que l'attribut &lt;strong&gt;cn&lt;/strong&gt; de l'annuaire a été mappé vers l'attribut &lt;strong&gt;username&lt;/strong&gt; de Keycloak.&lt;/p&gt;
&lt;p&gt;&lt;img data-recalc-dims="1" decoding="async" src="09b.png" alt="image-20220823120151055" /&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Pour voir tous les utilisateurs du royaume keycloak (fédération incluse), rechercher ***** comme utilisateur.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;De plus, pour l'utilisateur final, cela ne correspondra pas au login auquel il est habitué d'utiliser.&lt;/p&gt;
&lt;p&gt;Pour modifier ce comportement, il faut mapper l'attribut &lt;strong&gt;sAMAccountName&lt;/strong&gt; de l'anuaire Active Directory vers l'attribut &lt;strong&gt;username&lt;/strong&gt; de Keycloak.&lt;/p&gt;
&lt;p&gt;Se rendre sur les paramétrages de la fédération précédement réalisée, puis dans l'onglet &lt;strong&gt;Mappers (1)&lt;/strong&gt;, éditer le mapper &lt;strong&gt;username (2)&lt;/strong&gt; :&lt;/p&gt;
&lt;p&gt;&lt;img data-recalc-dims="1" decoding="async" src="10.png" alt="image-20220823114704603" /&gt;&lt;/p&gt;
&lt;p&gt;Modifier le champ &lt;strong&gt;LDAP Attribute&lt;/strong&gt; pour y inscrire &lt;strong&gt;sAMAccountName&lt;/strong&gt; :&lt;/p&gt;
&lt;p&gt;&lt;img data-recalc-dims="1" decoding="async" src="11.png" alt="image-20220823115150552" /&gt;&lt;/p&gt;
&lt;p&gt;Puis, enregistrer la modification en bas de page.&lt;/p&gt;
&lt;p&gt;Ensuite, dans l'onglet &lt;strong&gt;Settings&lt;/strong&gt;, modifier l'&lt;strong&gt;Username LDAP attribute&lt;/strong&gt; en y inscrivant &lt;strong&gt;sAMAccountName&lt;/strong&gt; :&lt;/p&gt;
&lt;p&gt;&lt;img data-recalc-dims="1" decoding="async" src="12.png" alt="image-20220823115607818" /&gt;&lt;/p&gt;
&lt;p&gt;Puis, enregistrer la modification en bas de page.&lt;/p&gt;
&lt;p&gt;En relançant la synchronisation de tous les utilisateurs de l'annuaire vers Keycloak, les utilisateurs sont mis à jour :&lt;/p&gt;
&lt;p&gt;&lt;img data-recalc-dims="1" decoding="async" src="13.png" alt="image-20220823115739535" /&gt;&lt;/p&gt;
&lt;p&gt;A présent, le login des utilisateurs importés dans Keycloak est correctement paramétré.&lt;/p&gt;</description></item><item><title>Nextcloud : Intégration d’une authentification SSO avec AD FS</title><link>https://beta.slash-root.fr/nextcloud-integration-dune-authentification-sso-avec-ad-fs/</link><pubDate>Fri, 08 Jul 2022 12:00:33 +0200</pubDate><guid>https://beta.slash-root.fr/nextcloud-integration-dune-authentification-sso-avec-ad-fs/</guid><description>&lt;img src="https://beta.slash-root.fr/nextcloud-integration-dune-authentification-sso-avec-ad-fs/cover.png" alt="Featured image of post Nextcloud : Intégration d’une authentification SSO avec AD FS" /&gt;&lt;p&gt;Cet article fait office de PoC (Proof of Concept) sur la mise en place d'une authentification SSO (Single-Sign-On) à travers le service ADFS (Active Directory Federation Services) de Microsoft et l'application Open Source Nextcloud.&lt;/p&gt;
&lt;p&gt;Cela va permettre aux utilisateurs de la plateforme Nextcloud de s'authentifier avec leur compte Active Directory en utilisant le protocole SAML dans des contextes réseaux totalement différents.&lt;/p&gt;
&lt;h2 id="environnement"&gt;&lt;a href="#environnement" class="header-anchor"&gt;&lt;/a&gt;Environnement
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;Environnements déjà déployés :
&lt;ul&gt;
&lt;li&gt;Nextcloud v24.0.2&lt;/li&gt;
&lt;li&gt;Contrôleur de domaine Windows Serveur 2019&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Informations :
&lt;ul&gt;
&lt;li&gt;Domaine AD : aukfood.lan&lt;/li&gt;
&lt;li&gt;Nom serveur AD : adfs-dev&lt;/li&gt;
&lt;li&gt;Domaine publique utilisé : example.com (remplace les parties floutées dans les captures d'écrans)&lt;/li&gt;
&lt;li&gt;URL Nextcloud : &lt;a href="https://nc-dev.example.com"&gt;https://nc-dev.example.com&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Enregistrement DNS pour l'ADFS : adfs2-dev.example.com&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="génération-du-certificat-lets-encrypt"&gt;&lt;a href="#g%c3%a9n%c3%a9ration-du-certificat-lets-encrypt" class="header-anchor"&gt;&lt;/a&gt;Génération du certificat Let&amp;rsquo;s Encrypt
&lt;/h2&gt;&lt;p&gt;A effectuer sur le serveur Windows (Tous les services seront déployés sur le contrôleur de domaine) :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Installation de IIS en Powershell :&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-powershell" data-lang="powershell"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Install-WindowsFeature -name Web-Server -IncludeManagementTools
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Faire un enregistrement de type A dans une zone DNS publique pour le serveur IIS :&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-ini" data-lang="ini"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#a6e22e"&gt;adfs2-dev IN A xxx.xxx.xxx.xxx&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;blockquote&gt;
&lt;p&gt;Dans ce PoC, le domaine publique utilisé sera &lt;em&gt;example.com&lt;/em&gt;.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Créer la racine du site web pour résoudre le challenge :&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;mkdir c:&lt;span style="color:#ae81ff"&gt;\i&lt;/span&gt;netpub&lt;span style="color:#ae81ff"&gt;\a&lt;/span&gt;dfs2-dev.example.com
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Créer un fichier &lt;code&gt;index.html&lt;/code&gt; dans la racine du site web :&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;notepad c:&lt;span style="color:#ae81ff"&gt;\i&lt;/span&gt;netpub&lt;span style="color:#ae81ff"&gt;\a&lt;/span&gt;dfs2-dev.example.com&lt;span style="color:#ae81ff"&gt;\i&lt;/span&gt;ndex.html
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Insérer le contenu suivant puis enregistrer :&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-html" data-lang="html"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Hello world
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Ouvrir la console de &lt;code&gt;Gestionnaire des services Internet (IIS)&lt;/code&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Supprimer le site web par défaut.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Ajouter un nouveau site web :&lt;/p&gt;
&lt;p&gt;&lt;img data-recalc-dims="1" decoding="async" src="website_iis.png" alt="image-20220629173936647" /&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Télécharger le client ACME pour Let's Encrypt ici : &lt;a href="https://www.win-acme.com/"&gt;https://www.win-acme.com/&lt;/a&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;A l'heure actuelle, la dernière version : &lt;a href="https://github.com/win-acme/win-acme/releases/download/v2.1.22.1267/win-acme.v2.1.22.1267.x64.pluggable.zip"&gt;https://github.com/win-acme/win-acme/releases/download/v2.1.22.1267/win-acme.v2.1.22.1267.x64.pluggable.zip&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Décompresser l'archive et déplacer le fichier &lt;code&gt;Web_Config.xml&lt;/code&gt; à la racine du site web.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Redémarrer le site web.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Lancer une ligne de commandes et se positionner dans le répertoire préalablement extrait.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Exécuter &lt;code&gt;wacs.exe&lt;/code&gt; :&lt;/p&gt;
&lt;p&gt;&lt;img data-recalc-dims="1" decoding="async" src="wacs.png" alt="image-20220629172217587" /&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Créer un nouveau certificat (Choix &lt;strong&gt;N&lt;/strong&gt;).&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Sélectionner le site ajouté au préalable dans IIS :&lt;/p&gt;
&lt;p&gt;&lt;img data-recalc-dims="1" decoding="async" src="wacs-N.png" alt="image-20220629174215379" /&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Peu importe si le certificat est de type wildcard ou non.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Le certificat est généré avec une tâche planifiée qui va renouveller le certificat automatiquement :&lt;/p&gt;
&lt;p&gt;&lt;img data-recalc-dims="1" decoding="async" src="wacs-C.png" alt="image-20220629174528336" /&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Une liaison &lt;strong&gt;https&lt;/strong&gt; (vhost) a été automatiquement générée pour le site web :&lt;/p&gt;
&lt;p&gt;&lt;img data-recalc-dims="1" decoding="async" src="wacs-vhost.png" alt="image-20220629175250793" /&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Ce certificat est celui qui sera exploité par le service &lt;code&gt;AD FS&lt;/code&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="exportation-du-certificat-au-format-pfx"&gt;&lt;a href="#exportation-du-certificat-au-format-pfx" class="header-anchor"&gt;&lt;/a&gt;Exportation du certificat au format pfx
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Re-lancer l'outil &lt;code&gt;wacs.exe&lt;/code&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Faire le choix &lt;strong&gt;A&lt;/strong&gt; (Manage renewals) :&lt;/p&gt;
&lt;p&gt;&lt;img data-recalc-dims="1" decoding="async" src="wacs-A.png" alt="image-20220629182842875" /&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Afficher les détails avec &lt;strong&gt;D&lt;/strong&gt;, puis noter le &lt;code&gt;.pfx password&lt;/code&gt; :&lt;/p&gt;
&lt;p&gt;&lt;img data-recalc-dims="1" decoding="async" src="wacs-D.png" alt="image-20220629183139844" /&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Ouvrir le dossier des certificats Let's Encrypt :&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-powershell" data-lang="powershell"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;explorer C:\ProgramData\win-acme\acme-v02.api.letsencrypt.org\Certificates\
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Sélectionner le certificat &lt;code&gt;.pfx&lt;/code&gt; correspondant puis démarrer l'assistant d'importation du certificat au niveau de l'ordinateur local (Pour rappel : c'est le DC) :&lt;/p&gt;
&lt;p&gt;&lt;img data-recalc-dims="1" decoding="async" src="pfx-export.png" alt="image-20220629184339453" /&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Saisir le mot de passe de la clé privée (&lt;code&gt;.pfx password&lt;/code&gt; noté au préalable) et cocher &lt;code&gt;Marquer cette clé comme exportable&lt;/code&gt; :&lt;/p&gt;
&lt;p&gt;&lt;img data-recalc-dims="1" decoding="async" src="pfx-password.png" alt="image-20220630082547704" /&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Sélectionner automatiquement le magasin de certificats.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Terminer l'assistant d'importation du certificat.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Ouvrir la gestion des certificats de l'ordinateur local :&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-powershell" data-lang="powershell"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;certlm.msc
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Dans &amp;quot;Personnel\Certificats&amp;quot; (1), sélectionner le certificat préalablement importé (2). Dans &amp;quot;Toutes les tâches&amp;quot; (3), sélectionner &amp;quot;Exporter&amp;quot; (4) :&lt;/p&gt;
&lt;p&gt;&lt;img data-recalc-dims="1" decoding="async" src="cert-export.png" alt="image-20220630083328159" /&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Il est maintenant possible d'exporter la clé privée du certificat :&lt;/p&gt;
&lt;p&gt;&lt;img data-recalc-dims="1" decoding="async" src="privkey-export.png" alt="image-20220630083457141" /&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Exporter toutes les propriétés étendues :&lt;/p&gt;
&lt;p&gt;&lt;img data-recalc-dims="1" decoding="async" src="export-all.png" alt="image-20220630083627092" /&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Saisir un mot de passe pour protéger la clé privée :&lt;/p&gt;
&lt;p&gt;&lt;img data-recalc-dims="1" decoding="async" src="protect-privkey.png" alt="image-20220630083813883" /&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Spécifier le nom du fichier à exporter au format &lt;code&gt;pfx&lt;/code&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Terminer l'assistant d'exportation du certificat.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="installation-ad-fs"&gt;&lt;a href="#installation-ad-fs" class="header-anchor"&gt;&lt;/a&gt;Installation AD FS
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Installer le service &lt;code&gt;ADFS-Federation&lt;/code&gt; en Powershell :&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-powershell" data-lang="powershell"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Install-WindowsFeature -name ADFS-Federation -IncludeManagementTools
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Créer la clé racine du service de distribution de clés en Powershell :&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-powershell" data-lang="powershell"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Add-KdsRootKey -EffectiveTime (Get-Date).AddHours(&lt;span style="color:#ae81ff"&gt;-10&lt;/span&gt;)
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;La configuration du service se fera en mode graphique à travers le gestionnaire de serveur &lt;code&gt;servermanager.exe&lt;/code&gt; :&lt;/p&gt;
&lt;p&gt;&lt;img data-recalc-dims="1" decoding="async" src="adfs-config.png" alt="image-20220630114920640" /&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Créer le premier serveur de fédération dans une batterie de serveurs de fédération.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Importer le certificat préalablement exporté au format &lt;code&gt;.pfx&lt;/code&gt; (1). Puis, entrer un nom pour le service FS (2) :&lt;/p&gt;
&lt;p&gt;&lt;img data-recalc-dims="1" decoding="async" src="cert-adfs.png" alt="image-20220630133612131" /&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Spécifier un compte de service :&lt;/p&gt;
&lt;p&gt;&lt;img data-recalc-dims="1" decoding="async" src="adfs-service.png" alt="image-20220630134121333" /&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Une base de données SQL Server peut être exploitée. Dans ce PoC, une base de données interne Windows est utilisée.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Après examen des options, la configuration peut être lancée :&lt;/p&gt;
&lt;p&gt;&lt;img data-recalc-dims="1" decoding="async" src="adfs-install.png" alt="image-20220630134402869" /&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Redémarrer le serveur Windows.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Activer la page de login de l'ADFS en Powershell :&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-powershell" data-lang="powershell"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Set-AdfsProperties -EnableIdpInitiatedSignonPage $true
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Tester la connexion : &lt;a href="https://adfs2-dev.example.com/adfs/ls/IdpInitiatedSignon.aspx"&gt;https://adfs2-dev.example.com/adfs/ls/IdpInitiatedSignon.aspx&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img data-recalc-dims="1" decoding="async" src="test-adfs.png" alt="image-20220630141116182" /&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="paramétrage-nextcloud"&gt;&lt;a href="#param%c3%a9trage-nextcloud" class="header-anchor"&gt;&lt;/a&gt;Paramétrage Nextcloud
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Se connecter en SSH sur le serveur Nextcloud et se positionner à la racine du projet web :&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;cd /var/www/nc-dev.example.com/www/
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Installer l'application &lt;code&gt;user_saml&lt;/code&gt; avec &lt;code&gt;occ&lt;/code&gt; (A adapter selon le propriétaire du projet web) :&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;sudo -u nextcloud php8.0 occ app:install user_saml
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;# user_saml 5.0.2 installed&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;# user_saml enabled&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Se connecter à l'interface web du Nextcloud en &lt;code&gt;admin&lt;/code&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Se rendre dans &amp;quot;Paramètres&amp;quot; (1) / &amp;quot;Authentification SSO &amp;amp; SAML&amp;quot; (2). Puis &amp;quot;Utiliser l'authentification SAML intégrée&amp;quot; (3) :&lt;/p&gt;
&lt;p&gt;&lt;img data-recalc-dims="1" decoding="async" src="next-samlon.png" alt="image-20220630140157898" /&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Dans la partie &amp;quot;Général&amp;quot;, entrer l'&lt;strong&gt;Attribut pour relier l'UID&lt;/strong&gt; :&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;http://schemas.xmlsoap.org/ws/2005/05/identity/claims/upn
&lt;/code&gt;&lt;/pre&gt;&lt;blockquote&gt;
&lt;p&gt;C'est l'UPN du compte de l'utilisateur dans l'AD qui fera office de nom d'utilisateur au sein de l'instance Nextcloud.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;img data-recalc-dims="1" decoding="async" src="next-upn.png" alt="image-20220630140651305" /&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Configurer les options IdP :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Identifiant de l'entité IdP&lt;/strong&gt; : &lt;a href="http://adfs2-dev.example.com/adfs/services/trust"&gt;http://adfs2-dev.example.com/adfs/services/trust&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;URL cible du fournisseur d'identités à qui le fournisseur de service enverra la requête d'authentification&lt;/strong&gt; : &lt;a href="https://adfs2-dev.example.com/adfs/ls"&gt;https://adfs2-dev.example.com/adfs/ls&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;img data-recalc-dims="1" decoding="async" src="next-optionsidp.png" alt="image-20220630141706164" /&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Cliquer sur &amp;quot;Hide optional Identity Provider settings&amp;quot; pour accéder au champ &lt;strong&gt;Certificat public X.509 de l'IdP&lt;/strong&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Sur le serveur Windows, ouvrir la console de gestion de l'ADFS :&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-powershell" data-lang="powershell"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;%&lt;/span&gt;windir%\ADFS\Microsoft.IdentityServer.msc
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Dans &amp;quot;Service&amp;quot; / &amp;quot;Certificats&amp;quot; (1), Afficher le certificat (2) utilisé pour la signature de jetons :&lt;/p&gt;
&lt;p&gt;&lt;img data-recalc-dims="1" decoding="async" src="adfs-certpub.png" alt="image-20220630142847703" /&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Dans l'onglet &amp;quot;Détails&amp;quot;, copier dans un fichier :&lt;/p&gt;
&lt;p&gt;&lt;img data-recalc-dims="1" decoding="async" src="cert-copier.png" alt="image-20220630143034704" /&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Exporter au format : *&lt;em&gt;X.509 encodé en base 64 (&lt;/em&gt;.cer)**&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Spécifier un nom de fichier pour l'export.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Copier le contenu de ce fichier exporté au format &lt;code&gt;.cer&lt;/code&gt; et le coller dans le champ &lt;strong&gt;Certificat public X.509 de l'IdP&lt;/strong&gt; dans Nextcloud :&lt;/p&gt;
&lt;p&gt;&lt;img data-recalc-dims="1" decoding="async" src="next-certpub.png" alt="image-20220630143523748" /&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Mapper les attributs suivants au minimum :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Attribut pour relier le nom d'utilisateur&lt;/strong&gt; : &lt;a href="http://schemas.microsoft.com/identity/claims/displayname"&gt;http://schemas.microsoft.com/identity/claims/displayname&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Attribut pour relier l'adresse mail&lt;/strong&gt; : &lt;a href="http://schemas.xmlsoap.org/ws/2005/05/identity/claims/emailaddress"&gt;http://schemas.xmlsoap.org/ws/2005/05/identity/claims/emailaddress&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;img data-recalc-dims="1" decoding="async" src="next-map.png" alt="image-20220630143833948" /&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Télécharger le fichier &lt;code&gt;metadata.xml&lt;/code&gt; :&lt;/p&gt;
&lt;p&gt;&lt;img data-recalc-dims="1" decoding="async" src="next-metadata.png" alt="image-20220630144006856" /&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Pour avoir la possibilité de garder l'authentification avec la base utilisateur interne de Nextcloud, cocher &lt;strong&gt;Autoriser l'utilisation de plusieurs systèmes d'authentification&lt;/strong&gt; :&lt;/p&gt;
&lt;p&gt;&lt;img data-recalc-dims="1" decoding="async" src="next-manyauth.png" alt="image-20220630144234576" /&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Bien vérifier l'enregistrement du paramétrage en quittant le menu &amp;quot;Authentification SSO &amp;amp; SAML&amp;quot; et en y revenant (Surtout sur le paramétrage du point précédent).&lt;/p&gt;
&lt;/blockquote&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="paramétrage-ad-fs"&gt;&lt;a href="#param%c3%a9trage-ad-fs" class="header-anchor"&gt;&lt;/a&gt;Paramétrage AD FS
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Sur le serveur Windows, ouvrir la console de gestion de l'AD FS :&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-powershell" data-lang="powershell"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;%&lt;/span&gt;windir%\ADFS\Microsoft.IdentityServer.msc
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Ajouter une approbation de partie de confiance :&lt;/p&gt;
&lt;p&gt;&lt;img data-recalc-dims="1" decoding="async" src="adfs-trusted.png" alt="image-20220630151040792" /&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Prendre en charge les revendications.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Importer les données concernant la partie de confiance à partir du fichier &lt;code&gt;metadata.xml&lt;/code&gt; téléchargé préalablement :&lt;/p&gt;
&lt;p&gt;&lt;img data-recalc-dims="1" decoding="async" src="adfs-metadata.png" alt="image-20220630151343201" /&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Saisir un nom pour cette approbation et éventuellement des notes.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Sélectionner une stratégie de contrôle d'accès. Dans ce PoC, tout le monde sera autorisé :&lt;/p&gt;
&lt;p&gt;&lt;img data-recalc-dims="1" decoding="async" src="adfs-policy.png" alt="image-20220630151559318" /&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;La partie de confiance a été configurée à l'aide du fichier &lt;code&gt;metadata.xml&lt;/code&gt; fourni.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Editer la stratégie d'émission de revendication :&lt;/p&gt;
&lt;p&gt;&lt;img data-recalc-dims="1" decoding="async" src="adfs-revendication.png" alt="image-20220630151802258" /&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;2 règles de revendication de transformations sont à ajouter au minimum :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;userPrincipalName&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Email&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Le modèle de régle de revendication à suivre est : &lt;strong&gt;Envoyer les attributs LDAP en tant que revendications&lt;/strong&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Règle &lt;strong&gt;userPrincipalName&lt;/strong&gt; :&lt;/p&gt;
&lt;p&gt;&lt;img data-recalc-dims="1" decoding="async" src="adfs-upn.png" alt="image-20220630152456345" /&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Règle &lt;strong&gt;Email&lt;/strong&gt; :&lt;/p&gt;
&lt;p&gt;&lt;img data-recalc-dims="1" decoding="async" src="adfs-email.png" alt="image-20220630152543102" /&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Appliquer les 2 règles ajoutées.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="vérification-de-lauthentification"&gt;&lt;a href="#v%c3%a9rification-de-lauthentification" class="header-anchor"&gt;&lt;/a&gt;Vérification de l&amp;rsquo;authentification
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Se connecter à Nextcloud, et choisir de s'authentifier au travers une &lt;strong&gt;Connection SSO &amp;amp; SAML&lt;/strong&gt; :&lt;/p&gt;
&lt;p&gt;&lt;img data-recalc-dims="1" decoding="async" src="next-adfs.png" alt="image-20220630152933665" /&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Utiliser un compte de l'Active Directory autoriser à se connecter à travers l'AD FS :&lt;/p&gt;
&lt;p&gt;&lt;img data-recalc-dims="1" decoding="async" src="adfs-test.png" alt="image-20220630153048587" /&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Congratulations !&lt;/p&gt;
&lt;p&gt;&lt;img data-recalc-dims="1" decoding="async" src="adfs-next.png" alt="image-20220630153150780" /&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="ressources-en-vrac"&gt;&lt;a href="#ressources-en-vrac" class="header-anchor"&gt;&lt;/a&gt;Ressources en vrac
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://blog.kveer.fr/login-nextcloud-saml-adfs/"&gt;https://blog.kveer.fr/login-nextcloud-saml-adfs/&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://www.virtualease.fr/nextcloud-authentication-active-directory-sso-via-adfs-saml/"&gt;https://www.virtualease.fr/nextcloud-authentication-active-directory-sso-via-adfs-saml/&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="http://os-zenia.blogspot.com/2021/01/nextcloud-sso-adfs.html"&gt;http://os-zenia.blogspot.com/2021/01/nextcloud-sso-adfs.html&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://rephlex.de/blog/2018/04/05/how-to-connect-nextcloud-to-active-directory-using-ad-fs-without-losing-your-mind/"&gt;https://rephlex.de/blog/2018/04/05/how-to-connect-nextcloud-to-active-directory-using-ad-fs-without-losing-your-mind/&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://www.myworkdrive.com/fr/support/adfs-single-sign-sso-integration-guide/"&gt;https://www.myworkdrive.com/fr/support/adfs-single-sign-sso-integration-guide/&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://www.infotechram.com/wp-content/uploads/2020/07/Installing-Active-Directory-Federation-Services.pdf"&gt;https://www.infotechram.com/wp-content/uploads/2020/07/Installing-Active-Directory-Federation-Services.pdf&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://www.alitajran.com/export-lets-encrypt-certificate-in-windows-server/"&gt;https://www.alitajran.com/export-lets-encrypt-certificate-in-windows-server/&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://www.rcfed.com/SAMLWSFed/CommonClaimtypelist"&gt;https://www.rcfed.com/SAMLWSFed/CommonClaimtypelist&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="https://docs.microsoft.com/fr-fr/dotnet/api/system.security.claims.claimtypes?view=net-6.0"&gt;https://docs.microsoft.com/fr-fr/dotnet/api/system.security.claims.claimtypes?view=net-6.0&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://docs.microsoft.com/fr-fr/windows-server/identity/ad-fs/troubleshooting/ad-fs-tshoot-initiatedsignon"&gt;https://docs.microsoft.com/fr-fr/windows-server/identity/ad-fs/troubleshooting/ad-fs-tshoot-initiatedsignon&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://help.mulesoft.com/s/article/Configuring-ADFS-SLO-endpoint"&gt;https://help.mulesoft.com/s/article/Configuring-ADFS-SLO-endpoint&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href="https://pitstop.manageengine.com/portal/en/kb/articles/saml-auto-login-with-adfs"&gt;https://pitstop.manageengine.com/portal/en/kb/articles/saml-auto-login-with-adfs&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>Azure : Synchronisation AD On-Premise &lt;&gt; Azure AD</title><link>https://beta.slash-root.fr/azure-synchronisation-ad-on-premise-azure-ad/</link><pubDate>Sat, 20 Nov 2021 04:03:05 +0100</pubDate><guid>https://beta.slash-root.fr/azure-synchronisation-ad-on-premise-azure-ad/</guid><description>&lt;img src="https://beta.slash-root.fr/azure-synchronisation-ad-on-premise-azure-ad/cover.jpg" alt="Featured image of post Azure : Synchronisation AD On-Premise &lt;&gt; Azure AD" /&gt;&lt;h2 id="objectif"&gt;&lt;a href="#objectif" class="header-anchor"&gt;&lt;/a&gt;Objectif
&lt;/h2&gt;&lt;p&gt;L'objectif de ce document est de mettre en place une synchronisation des utilisateurs, des mots de passes, et des groupes d'un Active directory local vers une infrastructure Azure AD et d'attribuer des licences Microsoft 365 aux utilisateurs du domaine. Ceux-ci n'auront qu'une seule identité entre le domaine local et leurs services Microsoft 365.&lt;/p&gt;
&lt;h2 id="contexte"&gt;&lt;a href="#contexte" class="header-anchor"&gt;&lt;/a&gt;Contexte
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;Contrôleur de domaine local : &lt;em&gt;SRV-AD (Windows Serveur 2019 Standard)&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;Domaine local : &lt;em&gt;starwars-bzh.local&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;Tenant Azure AD : &lt;em&gt;starwarsbzh.onmicrosoft.com&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;Architecture du domaine local :&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;img data-recalc-dims="1" decoding="async" src="25-ad-structure.png" alt="" /&gt;&lt;/p&gt;
&lt;h2 id="vérifier-lactivation-de-la-corbeille-active-directory"&gt;&lt;a href="#v%c3%a9rifier-lactivation-de-la-corbeille-active-directory" class="header-anchor"&gt;&lt;/a&gt;Vérifier l&amp;rsquo;activation de la corbeille Active Directory
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;En PowerShell :&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-powershell" data-lang="powershell"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Get-ADOptionalfeature -Filter {name &lt;span style="color:#f92672"&gt;-like&lt;/span&gt; &lt;span style="color:#e6db74"&gt;&amp;#34;Recycle Bin Feature&amp;#34;&lt;/span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;img data-recalc-dims="1" decoding="async" src="1-corbeille-ad-off.png" alt="" /&gt;&lt;/p&gt;
&lt;p&gt;Si la valeur &lt;code&gt;EnabledScope&lt;/code&gt; est vide, cela signifie que la corbeille Active Directory n'est pas activée.&lt;/p&gt;
&lt;h2 id="activer-la-corbeille-active-directory"&gt;&lt;a href="#activer-la-corbeille-active-directory" class="header-anchor"&gt;&lt;/a&gt;Activer la corbeille Active Directory
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;En PowerShell :&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-powershell" data-lang="powershell"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Enable-ADOptionalFeature &lt;span style="color:#e6db74"&gt;&amp;#34;Recycle Bin Feature&amp;#34;&lt;/span&gt; -Scope ForestOrConfigurationSet -Target &lt;span style="color:#e6db74"&gt;&amp;#34;starwars-bzh.local&amp;#34;&lt;/span&gt; -server srv-ad
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;img data-recalc-dims="1" decoding="async" src="2-activation-corbeille-ad.png" alt="" /&gt;&lt;/p&gt;
&lt;p&gt;Les options &lt;code&gt;-Target&lt;/code&gt; et &lt;code&gt;-Server&lt;/code&gt; doivent être adapté avec l'infrastructure du domaine local. Un message d'avertissement apparait car c'est une action irréversible mais ça peut sauver des vies.&lt;/p&gt;
&lt;p&gt;&lt;img data-recalc-dims="1" decoding="async" src="3-corbeille-ad-on.png" alt="" /&gt;&lt;/p&gt;
&lt;p&gt;Maintenant, la corbeille Active Directory est activée.&lt;/p&gt;
&lt;h2 id="configurer-lalias-upn"&gt;&lt;a href="#configurer-lalias-upn" class="header-anchor"&gt;&lt;/a&gt;Configurer l&amp;rsquo;alias UPN
&lt;/h2&gt;&lt;p&gt;Le domaine local est &lt;code&gt;starwars-bzh.local&lt;/code&gt; et le domaine Microsoft 365 public associé est &lt;code&gt;starwarsbzh.onmicrosoft.com&lt;/code&gt;. Pour que la synchronisation fonctionne, un alias UPN doit être mis en place dans le domaine local. L'idée est de remplacer le &lt;code&gt;@starwars-bzh.local&lt;/code&gt; par &lt;code&gt;@starwarsbzh.onmicrosoft.com&lt;/code&gt; pour tous les utilisateurs qui seront synchronisés vers Azure.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Sur le contrôleur de domaine, ouvrir la MMC &lt;code&gt;Domaines et approbation Active Directory&lt;/code&gt; :&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-powershell" data-lang="powershell"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;domain.msc
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;img data-recalc-dims="1" decoding="async" src="4-domain-msc.png" alt="" /&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Effectuer un clic droit sur le nom de la console et cliquer sur &lt;code&gt;Propriétés&lt;/code&gt; :&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;img data-recalc-dims="1" decoding="async" src="5-new-upn.png" alt="" /&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Renseigner la zone &lt;code&gt;Autres suffixes UPN&lt;/code&gt; avec le domaine Microsoft 365 déclaré soit &lt;code&gt;starwarsbzh.onmicrosoft.com&lt;/code&gt; puis appliquer.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Ensuite, il faut modifier en masse l'UPN par défaut des utilisateurs qui seront synchronisés dans Azure AD. Si on regarde les propriétés d'un compte utilisateur dans l'AD, on voit que l'on peut changer l'UPN par défaut.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Changer l'UPN par défaut :&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;img data-recalc-dims="1" decoding="async" src="6-propriete-upn.png" alt="" /&gt;&lt;/p&gt;
&lt;p&gt;Au lieu de la faire à la main sur chaque utilisateur, il est possible de le faire en masse.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;En PowerShell :&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-powershell" data-lang="powershell"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Get-ADUser -Filter * -SearchBase &lt;span style="color:#e6db74"&gt;&amp;#34;OU=Services,OU=Starwars-BZH,DC=starwars-bzh,DC=local&amp;#34;&lt;/span&gt; | &lt;span style="color:#66d9ef"&gt;Foreach&lt;/span&gt;{
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;$UPNNew = $_.UserPrincipalName &lt;span style="color:#f92672"&gt;-replace&lt;/span&gt; &lt;span style="color:#e6db74"&gt;&amp;#34;@starwars-bzh.local&amp;#34;&lt;/span&gt;,&lt;span style="color:#e6db74"&gt;&amp;#34;@starwarsbzh.onmicrosoft.com&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Set-ADUser -UserPrincipalName $UPNNew -Identity $_.SamAccountName
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;L'option &lt;code&gt;-SearchBase&lt;/code&gt; est à adapter selon les OU contenant les utilisateurs qui seront à synchroniser. La cmdlet &lt;code&gt;Get-ADUser&lt;/code&gt; est récursive.&lt;/p&gt;
&lt;h2 id="installer-azure-ad-connect"&gt;&lt;a href="#installer-azure-ad-connect" class="header-anchor"&gt;&lt;/a&gt;Installer Azure AD Connect
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Télécharger l'outil à l'adresse suivante : &lt;a href="https://www.microsoft.com/en-us/download/details.aspx?id=47594"&gt;https://www.microsoft.com/en-us/download/details.aspx?id=47594&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Puis lancer l'installation sur le contrôleur de domaine local.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Accepter les termes de la licence puis continuer :&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;img data-recalc-dims="1" decoding="async" src="7-install-azure-ad-connect-1.png" alt="" /&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Un message d'avertissement s'affiche indiquant que le domaine local n'est pas routable sur Internet. Une installation personnalisée est donc préférable :&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;img data-recalc-dims="1" decoding="async" src="8-install-azure-ad-connect-2.png" alt="" /&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Aucune des options suivantes n'est nécessaire. Il n'y a donc rien à cocher. Cliquer sur Installer :&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;img data-recalc-dims="1" decoding="async" src="9-install-azure-ad-connect-3.png" alt="" /&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Dans la partie &lt;code&gt;Connexion utilisateur&lt;/code&gt;, &lt;code&gt;Synchronisation de hachage du mot de passe&lt;/code&gt; est coché. Cela permet de synchroniser le mot de passe de l'AD local avec Azure AD. Le mot de passe ne transite pas en clair mais uniquement son hash. La case &lt;code&gt;Activer l&amp;#039;authentification unique&lt;/code&gt; peut être cochée si on souhaite mettre en place du SSO (Single-Sign-On). Ainsi l'utilisateur n'aura pas à ressaisir sont mot de passe du domaine lors de l'accès aux services Azure (Microsoft 365).&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;img data-recalc-dims="1" decoding="async" src="10-install-azure-ad-connect-4.png" alt="" /&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Dans la partie &lt;code&gt;Connexion à Azure AD&lt;/code&gt;, un compte administrateur général du tenant Azure est requis :&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;img data-recalc-dims="1" decoding="async" src="11-install-azure-ad-connect-5.png" alt="" /&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Dans la partie &lt;code&gt;Connexion de vos annuaires&lt;/code&gt;, la forêt locale est bien détectée. Cliquer sur &lt;code&gt;Ajout d&amp;#039;un annuaire&lt;/code&gt;. Il est préférable de créer un nouveau compte dans l'AD local qui sera utilisé par les outils effectuant la synchronisation entre l'AD local et Azure AD. Un compte administrateur du domaine est requis afin de pouvoir créer cet utilisateur. Cet utilisateur sera stocké dans le container &lt;code&gt;Users&lt;/code&gt;. Il ne devra être en aucun cas modifié ou supprimé.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;img data-recalc-dims="1" decoding="async" src="12-install-azure-ad-connect-6.png" alt="" /&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;La connexion à l'AD local est configurée :&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;img data-recalc-dims="1" decoding="async" src="13-install-azure-ad-connect-7.png" alt="" /&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Les suffixes UPN apparaissent comme &lt;code&gt;Non ajouté&lt;/code&gt;. Cela est tout à fait normal car il n'y a pas de domaines DNS spécifiques du type &lt;code&gt;starwarsbzh.fr&lt;/code&gt;. Si un domaine DNS en &lt;code&gt;.fr&lt;/code&gt; a été ajouté au tenant Azure, celui-ci sera noté comme &lt;code&gt;Vérifié&lt;/code&gt;. &lt;code&gt;Nom d&amp;#039;utilisateur principal&lt;/code&gt; doit être sur &lt;code&gt;userPrincipalName&lt;/code&gt;. La case &lt;code&gt;Continuer sans faire correspondre tous les suffixes UPN à des domaines vérifiés&lt;/code&gt; est à cocher.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;img data-recalc-dims="1" decoding="async" src="14-install-azure-ad-connect-8.png" alt="" /&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Sélectionner les OU à synchroniser entre l'AD local et Azure AD :&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;img data-recalc-dims="1" decoding="async" src="15-install-azure-ad-connect-9.png" alt="" /&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Dans la partie &lt;code&gt;Identification de manière unique de vos utilisateurs&lt;/code&gt;, laisser le choix par défaut :&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;img data-recalc-dims="1" decoding="async" src="16-install-azure-ad-connect-10.png" alt="" /&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Dans la partie &lt;code&gt;Filtrer les utilisateurs et appareils&lt;/code&gt;, laisser le choix par défaut :&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;img data-recalc-dims="1" decoding="async" src="17-install-azure-ad-connect-11.png" alt="" /&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Dans la partie &lt;code&gt;Fonctionnalités facultatives&lt;/code&gt;, laisser par défaut. A noter que la &lt;code&gt;Réécriture du mot de passe&lt;/code&gt; peut être intéressante afin de permettre aux utilisateurs de réinitialiser leur mot de passe directement à partir de Microsoft 365. Toutefois cela demande un niveau de licence Azure AD Premium P1. Sans cette option, le mot de passe est écrit dans l'Active Directory et synchronisé sur votre tenant, et non l'inverse.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;img data-recalc-dims="1" decoding="async" src="18-install-azure-ad-connect-12.png" alt="" /&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Le processus de synchronisation peut démarrer :&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;img data-recalc-dims="1" decoding="async" src="19-install-azure-ad-connect-13.png" alt="" /&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Pour modifier la configuration, il suffit de relancer l'assistant en cliquant sur l'icône &lt;code&gt;Azure AD Connect&lt;/code&gt; présente sur le bureau puis sur le bouton &lt;code&gt;Configurer&lt;/code&gt; (Modification des OU à synchroniser, ajout de nouvelles fonctionnalités).&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;img data-recalc-dims="1" decoding="async" src="20-fin-azure-ad-connect.png" alt="" /&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Vérifier la bonne présence des utilisateurs et des groupes dans le portail d'administration de Azure AD.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;img data-recalc-dims="1" decoding="async" src="21-verif-azure-ad.png" alt="" /&gt;&lt;/p&gt;
&lt;h2 id="affecter-les-licences-microsoft-365"&gt;&lt;a href="#affecter-les-licences-microsoft-365" class="header-anchor"&gt;&lt;/a&gt;Affecter les licences Microsoft 365
&lt;/h2&gt;&lt;p&gt;Afin de pouvoir affecter une licence Microsoft 365 à un utilisateur, il va falloir dans 1er temps lui attribuer un &lt;strong&gt;Lieu d'utilisation&lt;/strong&gt;. Ce paramètre se trouve dans le profil de l'utilisateur dans Azure AD :&lt;/p&gt;
&lt;p&gt;&lt;img data-recalc-dims="1" decoding="async" src="24-localization.png" alt="" /&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Attention, une fois le &lt;code&gt;Lieu d&amp;#039;utilisation&lt;/code&gt; affecté à un utilisateur. Un délai de 5 minutes peut être nécessaire avant de pouvoir lui attribuer une licence.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Une licence Microsoft 365 peut ensuite être attribué à un utilisateur :&lt;/p&gt;
&lt;p&gt;&lt;img data-recalc-dims="1" decoding="async" src="22-affect-licence.png" alt="" /&gt;&lt;/p&gt;
&lt;h2 id="vérifier-la-synchronisation"&gt;&lt;a href="#v%c3%a9rifier-la-synchronisation" class="header-anchor"&gt;&lt;/a&gt;Vérifier la synchronisation
&lt;/h2&gt;&lt;p&gt;Un outil nommé &lt;code&gt;Synchronization Service Manager&lt;/code&gt; a également été installé sur le contrôleur de domaine local permettant de vérifier l'état de la synchronisation. Par défaut celle-ci s'effectue toutes les 30 minutes.&lt;/p&gt;
&lt;p&gt;&lt;img data-recalc-dims="1" decoding="async" src="23-synchro-service.png" alt="" /&gt;&lt;/p&gt;
&lt;p&gt;A noter que si un mot de passe est modifié dans l'AD local, celui-ci sera répliqué sous 2 minutes au sein d'Azure AD.&lt;/p&gt;</description></item></channel></rss>