<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Annuaire on slash-root.fr</title><link>https://beta.slash-root.fr/tags/annuaire/</link><description>Recent content in Annuaire 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/annuaire/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>Keycloak : Integration LDAP externe</title><link>https://beta.slash-root.fr/keycloak-integration-ldap-externe/</link><pubDate>Thu, 04 Nov 2021 17:33:31 +0100</pubDate><guid>https://beta.slash-root.fr/keycloak-integration-ldap-externe/</guid><description>&lt;img src="https://beta.slash-root.fr/keycloak-integration-ldap-externe/cover.png" alt="Featured image of post Keycloak : Integration LDAP externe" /&gt;&lt;h2 id="introduction"&gt;&lt;a href="#introduction" class="header-anchor"&gt;&lt;/a&gt;Introduction
&lt;/h2&gt;&lt;p&gt;La solution Keycloak est embarqué avec la possibilité de joindre un annuaire LDAP/AD. Il est possible de fédérer plusieurs serveurs d'annuaires au sein d'un même royaume keycloak. Les attributs utilisateurs de l'annuaire LDAP peuvent être mappé dans un model d'utilisateur keycloak. Par défaut, les attributs &lt;code&gt;username&lt;/code&gt;, &lt;code&gt;email&lt;/code&gt;, &lt;code&gt;first name&lt;/code&gt;, &lt;code&gt;last name&lt;/code&gt; sont mappés mais d'autres attributs peuvent l'être également.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Cet article fait suite à :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://beta.slash-root.fr/2021/10/25/keycloak-installation-avec-docker-et-reverse-proxy-ssl-nginx/"&gt;Keycloak : Installation avec Docker et reverse-proxy SSL Nginx&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://beta.slash-root.fr/2021/11/04/openldap-installation-avec-fusiondirectory/"&gt;OpenLDAP : Installation avec FusionDirectory&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/blockquote&gt;
&lt;h2 id="prérequis"&gt;&lt;a href="#pr%c3%a9requis" class="header-anchor"&gt;&lt;/a&gt;Prérequis
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;Un serveur Keycloak fonctionnel&lt;/li&gt;
&lt;li&gt;Un serveur OpenLDAP/FusionDirectory fonctionnel&lt;/li&gt;
&lt;/ul&gt;
&lt;blockquote&gt;
&lt;p&gt;Toute la procédure fera référence aux configuration déployées dans les articles cités en introduction.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="configuration"&gt;&lt;a href="#configuration" class="header-anchor"&gt;&lt;/a&gt;Configuration
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Se rendre sur la WebUI du serveur Keycloak : &lt;a href="https://keycloak.example.com"&gt;https://keycloak.example.com&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Se rendre dans la partie &lt;code&gt;User Federation&lt;/code&gt; et ajouter &lt;code&gt;ldap&lt;/code&gt; en provider :&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;img data-recalc-dims="1" decoding="async" src="user_fede.png" alt="" /&gt;&lt;/p&gt;
&lt;h3 id="paramétrage---1ère-partie"&gt;&lt;a href="#param%c3%a9trage---1%c3%a8re-partie" class="header-anchor"&gt;&lt;/a&gt;Paramétrage - 1ère partie
&lt;/h3&gt;&lt;p&gt;&lt;img data-recalc-dims="1" decoding="async" src="fed1.png" alt="" /&gt;&lt;/p&gt;
&lt;h4 id="stockage"&gt;&lt;a href="#stockage" class="header-anchor"&gt;&lt;/a&gt;Stockage
&lt;/h4&gt;&lt;p&gt;Par défaut, Keycloak importe les utilisateurs de l'annuaire LDAP dans sa base locale d'utilisateurs. Cette copie des utilisateurs peut être synchronisée soit manuellement soit automatiquement toutes les x minutes par exemple. Seul les mots de passes ne sont pas synchronisés. Dans le processus d'identification de l'utilisateur, la validation du mot de passe est délégué au serveur LDAP. L'avantage de cette approche est que toutes les fonctionnalités de Keycloak fonctionneront avec des attributs utilisateurs supplémentaires qui sont stockés localement sur Keycloak. Cela permet également de réduire la charge sur le serveur LDAP.&lt;/p&gt;
&lt;p&gt;Il est possible de ne pas importer les utilisateurs de l'annuaire LDAP dans Keycloak en décochant &lt;code&gt;Import Users&lt;/code&gt;. Cela aura pour effet d'augmenter les requêtes vers le serveur LDAP car aucune information utilisateur ne sera stockée localement sur Keycloak. L'autre conséquence de ce choix est que si une fonctionnalité de Keycloak repose sur une partie non supporté par l'annuaire LDAP, celle-ci ne fonctionnera pas. En revanche, l'avantage est de ne pas avoir à gérer la synchronisation des comptes.&lt;/p&gt;
&lt;h4 id="edition"&gt;&lt;a href="#edition" class="header-anchor"&gt;&lt;/a&gt;Edition
&lt;/h4&gt;&lt;p&gt;L'&lt;code&gt;Edit Mode&lt;/code&gt; permet aux utilisateurs et aux administrateurs, à travers leurs consoles respectives sur Keycloak, de modifier les metadas utilisateur.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;READONLY&lt;/code&gt; : Les attributs utilisateurs resteront inchangés. Une erreur apparaitra si une modification d'attribut est faites. Cela est également valable pour la modification d'un mot de passe utilisateur.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;WRITABLE&lt;/code&gt; : Tous les attributs utilisateurs modifiés seront synchronisés automatiquement avec l'annuaire LDAP.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;UNSYNCED&lt;/code&gt; : Tous les changements d'attributs seront stockés localement dans la base de Keycloak. La synchronisation des modifications au sein de Keycloak vers l'annuaire LDAP devra être faites manuellement.&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id="vendor"&gt;&lt;a href="#vendor" class="header-anchor"&gt;&lt;/a&gt;Vendor
&lt;/h4&gt;&lt;p&gt;Plusieurs choix sont possibles suivant le type d'annuaire LDAP en face :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Active Directory&lt;/li&gt;
&lt;li&gt;Red Hat Directory Server&lt;/li&gt;
&lt;li&gt;Tivoli&lt;/li&gt;
&lt;li&gt;Novell eDirectory&lt;/li&gt;
&lt;li&gt;Other&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;L'annuaire installé étant OpenLDAP, &lt;code&gt;other&lt;/code&gt; est le choix à faire.&lt;/p&gt;
&lt;h3 id="paramétrage---2nd-partie"&gt;&lt;a href="#param%c3%a9trage---2nd-partie" class="header-anchor"&gt;&lt;/a&gt;Paramétrage - 2nd partie
&lt;/h3&gt;&lt;p&gt;&lt;img data-recalc-dims="1" decoding="async" src="fed2.png" alt="" /&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;Connection URL&lt;/code&gt; : Indiquer le chemin d'accès au serveur LDAP&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Users DN&lt;/code&gt; : Indiquer le chemin d'accès aux utilisateurs dans l'annuaire.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Bind DN&lt;/code&gt; : Indiquer un compte dans l'annuaire ayant des droits d'écriture.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Bind Credential&lt;/code&gt; : Le mot de passe du compte spécifié dans &amp;quot;Bind DN&amp;quot;.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="synchronisation"&gt;&lt;a href="#synchronisation" class="header-anchor"&gt;&lt;/a&gt;Synchronisation
&lt;/h3&gt;&lt;p&gt;Un peu plus bas de la page de configuration de la connexion au serveur LDAP, un menu &lt;code&gt;Sync Settings&lt;/code&gt; est disponible :&lt;/p&gt;
&lt;p&gt;&lt;img data-recalc-dims="1" decoding="async" src="sync_set.png" alt="" /&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;Batch Size&lt;/code&gt; : Le nombre de compte utilisateurs qui seront traités en une synchronisation.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Periodic Full Sync&lt;/code&gt; : La planification en secondes de la synchronisation totale / complète.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Periodic Changed Users Sync&lt;/code&gt; : La planification en secondes de la synchronisation des changements apportés aux attributs utilisateurs.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Après avoir sauvegarder tous les paramètres, il est possible de déclencher manuellement une première synchronisation des utilisateurs de l'annuaire LDAP dans Keycloak :&lt;/p&gt;
&lt;p&gt;&lt;img data-recalc-dims="1" decoding="async" src="sync_manuel.png" alt="" /&gt;&lt;/p&gt;
&lt;h3 id="mappers"&gt;&lt;a href="#mappers" class="header-anchor"&gt;&lt;/a&gt;Mappers
&lt;/h3&gt;&lt;p&gt;Par défaut, des &lt;code&gt;Mappers&lt;/code&gt; sont mis en place. Un mapper va permettre de mapper un attribut utilisateur de l'annuaire LDAP à un attribut utilisateur de Keycloak :&lt;/p&gt;
&lt;p&gt;&lt;img data-recalc-dims="1" decoding="async" src="mappers.png" alt="" /&gt;&lt;/p&gt;
&lt;p&gt;Dans mes différents essais, en déployant cette solution de SSO avec un OpenLDAP, il est apparu que l'attribut &lt;code&gt;firstName&lt;/code&gt; de Keycloak est mappé avec l'attribut &lt;code&gt;cn&lt;/code&gt; de l'annuaire LDAP. L'attribut &lt;code&gt;cn&lt;/code&gt; dans l'annuaire (avec la couche FusionDirectory) est une concaténation du prénom et du nom de l'utilisateur :&lt;/p&gt;
&lt;p&gt;&lt;img data-recalc-dims="1" decoding="async" src="cn_ldap.png" alt="" /&gt;&lt;/p&gt;
&lt;p&gt;Au lieu de modifier la configuration de l'annuaire LDAP, modifier le mapper &lt;code&gt;first name&lt;/code&gt; dans Keycloak :&lt;/p&gt;
&lt;p&gt;&lt;img data-recalc-dims="1" decoding="async" src="first_name.png" alt="" /&gt;&lt;/p&gt;
&lt;p&gt;Modifier &lt;code&gt;LDAP Attribute&lt;/code&gt; pour indiquer &lt;code&gt;givenName&lt;/code&gt;.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;code&gt;givenName&lt;/code&gt; est le nom de l'attribut prénom au sein de l'annuaire LDAP dans notre configuration.&lt;/p&gt;
&lt;/blockquote&gt;</description></item><item><title>OpenLDAP : Installation avec FusionDirectory</title><link>https://beta.slash-root.fr/openldap-installation-avec-fusiondirectory/</link><pubDate>Thu, 04 Nov 2021 13:12:04 +0100</pubDate><guid>https://beta.slash-root.fr/openldap-installation-avec-fusiondirectory/</guid><description>&lt;img src="https://beta.slash-root.fr/openldap-installation-avec-fusiondirectory/cover.png" alt="Featured image of post OpenLDAP : Installation avec FusionDirectory" /&gt;&lt;h2 id="introduction"&gt;&lt;a href="#introduction" class="header-anchor"&gt;&lt;/a&gt;Introduction
&lt;/h2&gt;&lt;p&gt;&lt;strong&gt;OpenLDAP&lt;/strong&gt; est un annuaire informatique qui fonctionne sur le modèle client/serveur. Il contient des informations de n'importe quelle nature qui sont rangées de manière hiérarchique. Pour bien comprendre le concept, il est souvent comparé aux pages jaunes, où le lecteur recherche un numéro de téléphone particulier : il va d'abord sélectionner la profession, puis la ville, puis le nom de l'entrée pour trouver finalement le numéro de téléphone. En pratique, dans un réseau informatique, il est utilisé pour enregistrer une grande quantité d'utilisateurs ou de services, parfois des centaines de milliers. Il permet d'organiser hiérarchiquement les utilisateurs par département, par lieu géographique ou par n'importe quel autre critère. C'est une alternative libre à Microsoft Active Directory.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Source : &lt;a href="https://fr.wikipedia.org/wiki/OpenLDAP"&gt;OpenLDAP — Wikipédia (wikipedia.org)&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;strong&gt;FusionDirectory&lt;/strong&gt; est une application web qui permet la gestion des infrastructures et le déploiement des systèmes. Son but est de faciliter le travail de l’administrateur système indépendamment de la taille et de la variété du parc à gérer.&lt;/p&gt;
&lt;p&gt;&lt;img data-recalc-dims="1" decoding="async" src="schema_intro.png" alt="" /&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Source : &lt;a href="https://fr.wikibooks.org/wiki/FusionDirectory"&gt;FusionDirectory — Wikilivres (wikibooks.org)&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Dans cet article, je vais présenter l'installation et la configuration initiale d'OpenLDAP avec FusionDirectory sur un même serveur Debian 10 fraîchement installé avec les outils de base.&lt;/p&gt;
&lt;h2 id="prérequis"&gt;&lt;a href="#pr%c3%a9requis" class="header-anchor"&gt;&lt;/a&gt;Prérequis
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Un serveur Debian 10 fraîchement installé et à jour.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Une adresse IP statique doit être configuré sur le serveur.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Le nom d'hôte du serveur doit être le FQDN futur dans l'annuaire ldap.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Vérifier les fichiers &lt;code&gt;/etc/hostname&lt;/code&gt; et &lt;code&gt;/etc/hosts&lt;/code&gt;.&lt;/p&gt;
&lt;/blockquote&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;&lt;span style="color:#75715e"&gt;# Exemple d&amp;#39;un fichier /etc/hostname&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;srv-ldap.domaine.local
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&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;&lt;span style="color:#75715e"&gt;# Exemple d&amp;#39;un fichier /etc/hosts&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;127.0.0.1 localhost
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;127.0.1.1 srv-ldap
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;192.168.1.10 srv-ldap.domaine.local srv-ldap
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="installation"&gt;&lt;a href="#installation" class="header-anchor"&gt;&lt;/a&gt;Installation
&lt;/h2&gt;&lt;h3 id="openldap"&gt;&lt;a href="#openldap" class="header-anchor"&gt;&lt;/a&gt;OpenLDAP
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Installer les paquets nécessaires :&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 slapd ldap-utils
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Saisir le mot de passe souhaité pour le compte &lt;code&gt;admin&lt;/code&gt; de l'annuaire :&lt;/p&gt;
&lt;p&gt;&lt;img data-recalc-dims="1" decoding="async" src="admin_pwd.png" alt="" /&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Saisir une seconde fois le mot de passe pour confirmer.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Vérifier l'installation d'OpenLDAP :&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 slapcat
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Voici le retour attendu :&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;dn: dc&lt;span style="color:#f92672"&gt;=&lt;/span&gt;domaine,dc&lt;span style="color:#f92672"&gt;=&lt;/span&gt;local
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;objectClass: top
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;objectClass: dcObject
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;objectClass: organization
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;o: domaine.local
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;dc: domaine
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;structuralObjectClass: organization
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;entryUUID: a91714fa-d1a0-103b-9752-7ba3681b6a0b
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;creatorsName: cn&lt;span style="color:#f92672"&gt;=&lt;/span&gt;admin,dc&lt;span style="color:#f92672"&gt;=&lt;/span&gt;domaine,dc&lt;span style="color:#f92672"&gt;=&lt;/span&gt;local
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;createTimestamp: 20211104095226Z
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;entryCSN: 20211104095226.276305Z#000000#000#000000
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;modifiersName: cn&lt;span style="color:#f92672"&gt;=&lt;/span&gt;admin,dc&lt;span style="color:#f92672"&gt;=&lt;/span&gt;domaine,dc&lt;span style="color:#f92672"&gt;=&lt;/span&gt;local
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;modifyTimestamp: 20211104095226Z
&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;dn: cn&lt;span style="color:#f92672"&gt;=&lt;/span&gt;admin,dc&lt;span style="color:#f92672"&gt;=&lt;/span&gt;domaine,dc&lt;span style="color:#f92672"&gt;=&lt;/span&gt;local
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;objectClass: simpleSecurityObject
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;objectClass: organizationalRole
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;cn: admin
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;description: LDAP administrator
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;userPassword:: e1NTSEF9bHRGR2hnUTNCMTdLcWlUSTI1UVU2TjI2d3U4dmhydWc&lt;span style="color:#f92672"&gt;=&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;structuralObjectClass: organizationalRole
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;entryUUID: a9175640-d1a0-103b-9753-7ba3681b6a0b
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;creatorsName: cn&lt;span style="color:#f92672"&gt;=&lt;/span&gt;admin,dc&lt;span style="color:#f92672"&gt;=&lt;/span&gt;domaine,dc&lt;span style="color:#f92672"&gt;=&lt;/span&gt;local
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;createTimestamp: 20211104095226Z
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;entryCSN: 20211104095226.278012Z#000000#000#000000
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;modifiersName: cn&lt;span style="color:#f92672"&gt;=&lt;/span&gt;admin,dc&lt;span style="color:#f92672"&gt;=&lt;/span&gt;domaine,dc&lt;span style="color:#f92672"&gt;=&lt;/span&gt;local
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;modifyTimestamp: 20211104095226Z
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;blockquote&gt;
&lt;p&gt;La configuration du schéma de l'annuaire sera faites à travers FusionDirectory.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="fusiondirectory"&gt;&lt;a href="#fusiondirectory" class="header-anchor"&gt;&lt;/a&gt;FusionDirectory
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Récupérer et ajouter la clef GPG officielle de FusionDirectory :&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;wget https://public.fusiondirectory.org/FD-archive-key
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;sudo apt install -y gnupg2 &lt;span style="color:#f92672"&gt;&amp;amp;&amp;amp;&lt;/span&gt; sudo apt-key add FD-archive-key
&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 le repository de fusiondirectory pour debian :&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 cat &amp;gt; /etc/apt/sources.list.d/fusiondirectory-release.list &lt;span style="color:#e6db74"&gt;&amp;lt;&amp;lt; &amp;#39;EOL&amp;#39;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#e6db74"&gt;#fusiondirectory repository
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#e6db74"&gt;deb https://public.fusiondirectory.org/stretch-fusiondirectory-release/ stretch main
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#e6db74"&gt;EOL&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;Ajouter le repository de schema2ldif pour debian :&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 cat &amp;gt; /etc/apt/sources.list.d/schema2ldif-release.list &lt;span style="color:#e6db74"&gt;&amp;lt;&amp;lt; &amp;#39;EOL&amp;#39;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#e6db74"&gt;#latest version of schema2ldif
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#e6db74"&gt;deb https://public.fusiondirectory.org/stretch-schema2ldif-release/ stretch main
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#e6db74"&gt;EOL&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;Mettre à jour la liste des paquets :&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 update
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Les repositories étant en https, installer le paquet &lt;code&gt;apt-transport-https&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 apt-transport-https
&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 les paquets pour FusionDirectory :&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 fusiondirectory fusiondirectory-schema
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;blockquote&gt;
&lt;p&gt;Apache2 sera déployé en même temps. Il est possible de se reposer sur un autre serveur web mais cela ne sera pas abordé ici.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Installer les paquets manquant pour PHP :&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 php-xml
&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 les schémas FusionDirectory dans la base LDAP :&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 fusiondirectory-insert-schema
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Redémarrer Apache2 :&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 systemctl restart apache2.service
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="configuration"&gt;&lt;a href="#configuration" class="header-anchor"&gt;&lt;/a&gt;Configuration
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Se connecter à la WebUI de FusionDirectory : &lt;a href="http://srv-ldap.domaine.local/fusiondirectory/"&gt;http://srv-ldap.domaine.local/fusiondirectory/&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Pour accéder au serveur, il est nécessaire de mettre un token dans un fichier. Celui-ci est indiquer sur la WebUI :&lt;/p&gt;
&lt;p&gt;&lt;img data-recalc-dims="1" decoding="async" src="token_fusion.png" alt="" /&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Copier / Coller la commande avant de cliquer sur &lt;strong&gt;Suivant&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-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;sudo echo -n cm5ch69brdj9jdm8uejjrfans0 &amp;gt; /var/cache/fusiondirectory/fusiondirectory.auth
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Configurer la langue :&lt;/p&gt;
&lt;p&gt;&lt;img data-recalc-dims="1" decoding="async" src="langue_fusion.png" alt="" /&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Vérifier que l'installation soit entièrement en vert avant de continuer :&lt;/p&gt;
&lt;p&gt;&lt;img data-recalc-dims="1" decoding="async" src="verif_fusion.png" alt="" /&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Vérifier les informations de connexion au serveur LDAP et saisir le mot de passe du compte &lt;code&gt;admin&lt;/code&gt; de l'annuaire spécifié lors de l'installation d'OpenLDAP plus haut :&lt;/p&gt;
&lt;p&gt;&lt;img data-recalc-dims="1" decoding="async" src="connect_ldap.png" alt="" /&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Régler le fuseau horaire :&lt;/p&gt;
&lt;p&gt;&lt;img data-recalc-dims="1" decoding="async" src="timezone_fusion.png" alt="" /&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;blockquote&gt;
&lt;p&gt;La configuration par défaut est conservé dans cette procédure. Il est bien évidement possible de la modifier plus tard pour par définir une politique de sécurité des mots de passes par exemple.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Une inspection LDAP est effectuée et propose plusieurs actions afin d'être pleinement compatible avec FusionDirectory. Effectuer les actions nécessaires :&lt;/p&gt;
&lt;p&gt;&lt;img data-recalc-dims="1" decoding="async" src="inspect_ldap.png" alt="" /&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Télécharger le fichier de configuration :&lt;/p&gt;
&lt;p&gt;&lt;img data-recalc-dims="1" decoding="async" src="config_fusion.png" alt="" /&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Placer ce fichier &lt;code&gt;fusiondirectory.conf&lt;/code&gt; dans le répertoire du serveur &lt;code&gt;/etc/fusiondirectory/&lt;/code&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Vérifier la configuration de FusionDirectory :&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 fusiondirectory-setup --check-config
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Une erreur est détectée. Répondre &lt;code&gt;Yes&lt;/code&gt; afin de corriger les permissions du fichier de configuration de fusion :&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;Checking FusionDirectory&lt;span style="color:#960050;background-color:#1e0010"&gt;&amp;#39;&lt;/span&gt;s config file
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;/etc/fusiondirectory/fusiondirectory.conf exists…
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;/etc/fusiondirectory/fusiondirectory.conf is not set properly, &lt;span style="color:#66d9ef"&gt;do&lt;/span&gt; you want to fix it ?: &lt;span style="color:#f92672"&gt;[&lt;/span&gt;Yes/No&lt;span style="color:#f92672"&gt;]&lt;/span&gt;?
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Yes
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;OpenLDAP et FusionDirectory sont fonctionnels :&lt;/p&gt;
&lt;p&gt;&lt;img data-recalc-dims="1" decoding="async" src="end_install.png" alt="" /&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="attribut-mail"&gt;&lt;a href="#attribut-mail" class="header-anchor"&gt;&lt;/a&gt;Attribut mail
&lt;/h2&gt;&lt;blockquote&gt;
&lt;p&gt;Par défaut, il n'y pas d'attribut mail sur un utilisateur. Cependant, il est possible de l'ajouter.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Installer les paquets nécessaires :&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 fusiondirectory-plugin-mail fusiondirectory-plugin-mail-schema
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Modifier le schéma de l'annuaire afin de faire apparaitre l'attribut mail :&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 fusiondirectory-insert-schema -i /etc/ldap/schema/fusiondirectory/mail-fd.schema
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Il est désormais possible de spécifier une adresse mail pour les utilisateurs :&lt;/p&gt;
&lt;p&gt;&lt;img data-recalc-dims="1" decoding="async" src="mail_fusion.png" alt="" /&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>Samba : Installation d’un contrôleur de domaine</title><link>https://beta.slash-root.fr/samba-installation-dun-controleur-de-domaine/</link><pubDate>Fri, 29 Oct 2021 10:40:56 +0200</pubDate><guid>https://beta.slash-root.fr/samba-installation-dun-controleur-de-domaine/</guid><description>&lt;img src="https://beta.slash-root.fr/samba-installation-dun-controleur-de-domaine/cover.png" alt="Featured image of post Samba : Installation d’un contrôleur de domaine" /&gt;&lt;h2 id="introduction"&gt;&lt;a href="#introduction" class="header-anchor"&gt;&lt;/a&gt;Introduction
&lt;/h2&gt;&lt;p&gt;Samba permet d'implémenter le protocole propriétaire SMB/CIFS de Microsoft sous un environnement Unix et ses dérivés. Il offre la possibilité de partager des ressources dans un SI hétérogène Windows/Linux.&lt;/p&gt;
&lt;p&gt;A partir de la version 3, Samba fournit le partage de fichiers/imprimantes et peut intégrer un domaine Active Directory en tant que membre. Il peut également être PDC (Primary Domain Controller) avec un niveau fonctionnel NT4.&lt;/p&gt;
&lt;p&gt;A partir de la version 4, Samba peut servir de contrôleur de domaine Active Directory avec un niveau fonctionnel Windows Server 2008 et offre les services d'authentification AD. Des GPOs peuvent être déployées.&lt;/p&gt;
&lt;p&gt;Dans cette procédure, une distribution Debian 10 et Samba en version 4 sont utilisées.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Le serveur samba sera nommé : srv-samba&lt;/li&gt;
&lt;li&gt;Le domaine sera : domaine.local&lt;/li&gt;
&lt;li&gt;L'adresse IP du serveur samba sera : 192.168.1.10&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="préparation"&gt;&lt;a href="#pr%c3%a9paration" class="header-anchor"&gt;&lt;/a&gt;Préparation
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Modifier le nom du serveur en y indiquant le futur domaine :&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 echo &lt;span style="color:#e6db74"&gt;&amp;#34;srv-samba.domaine.local&amp;#34;&lt;/span&gt; &amp;gt; /etc/hostname &lt;span style="color:#75715e"&gt;# Pour la persistence après un reboot&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;sudo hostname &lt;span style="color:#66d9ef"&gt;$(&lt;/span&gt;cat /etc/hostname&lt;span style="color:#66d9ef"&gt;)&lt;/span&gt; &lt;span style="color:#75715e"&gt;# Pour modifier le nom sans avoir à reboot&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;Attribuer une adresse IP fixe :&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 vi /etc/network/interfaces
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;# Exemple :&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;# auto ens18&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;# iface ens18 inet static&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;# address 192.168.1.10&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;# netmask 255.255.255.0&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;# gateway 192.168.1.254&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;Modifier le fichier hosts en conséquence :&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 echo &lt;span style="color:#e6db74"&gt;&amp;#34;192.168.1.10 srv-samba.domaine.local srv-samba&amp;#34;&lt;/span&gt; &amp;gt;&amp;gt; /etc/hosts
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="installation-et-configuration-de-samba"&gt;&lt;a href="#installation-et-configuration-de-samba" class="header-anchor"&gt;&lt;/a&gt;Installation et configuration de Samba
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Installation des paquets nécessaires :&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 -y install samba krb5-config winbind smbclient
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;blockquote&gt;
&lt;ul&gt;
&lt;li&gt;Modifier smb.conf pour utiliser les paramètres WINS fournis par DHCP ? : &lt;strong&gt;Non&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;Royaume (« realm ») Kerberos version 5 par défaut : &lt;strong&gt;domaine.local&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;Serveurs Kerberos du royaume : &lt;strong&gt;srv-samba.domaine.local&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;Serveur administratif du royaume Kerberos : &lt;strong&gt;srv-samba.domaine.local&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/blockquote&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Samba est installé.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="création-du-domaine"&gt;&lt;a href="#cr%c3%a9ation-du-domaine" class="header-anchor"&gt;&lt;/a&gt;Création du domaine
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Renommer le fichier de configuration principal de samba &lt;code&gt;/etc/samba/smb.conf&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 mv /etc/samba/smb.conf /etc/samba/smb.conf.org
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Provisionner le domaine :&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 samba-tool domain provision
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;blockquote&gt;
&lt;ul&gt;
&lt;li&gt;Realm [DOMAINE.LOCAL]: &lt;strong&gt;Appuyer sur Entrée&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;Domain [DOMAINE]: &lt;strong&gt;Appuyer sur Entrée&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;Server Role (dc, member, standalone) [dc]: &lt;strong&gt;Appuyer sur Entrée&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;DNS backend (SAMBA_INTERNAL, BIND9_FLATFILE, BIND9_DLZ, NONE) [SAMBA_INTERNAL]: &lt;strong&gt;Appuyer sur Entrée&lt;/strong&gt; (Le serveur DNS sera interne à Samba dans cette installation)&lt;/li&gt;
&lt;li&gt;DNS forwarder IP address (write 'none' to disable forwarding) [1.1.1.1]: &lt;strong&gt;Appuyer sur Entrée&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;Administrator password: &lt;strong&gt;Saisir le mot de passe admin du domaine&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;Retype password: &lt;strong&gt;Ressaisir le mot de passe admin du domaine&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/blockquote&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Le domaine est créé :&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;Looking up IPv4 addresses
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Looking up IPv6 addresses
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;No IPv6 address will be assigned
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Setting up share.ldb
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Setting up secrets.ldb
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Setting up the registry
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Setting up the privileges database
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Setting up idmap db
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Setting up SAM db
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Setting up sam.ldb partitions and settings
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Setting up sam.ldb rootDSE
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Pre-loading the Samba &lt;span style="color:#ae81ff"&gt;4&lt;/span&gt; and AD schema
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Unable to determine the DomainSID, can not enforce uniqueness constraint on local domainSIDs
&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;Adding DomainDN: DC&lt;span style="color:#f92672"&gt;=&lt;/span&gt;domaine,DC&lt;span style="color:#f92672"&gt;=&lt;/span&gt;local
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Adding configuration container
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Setting up sam.ldb schema
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Setting up sam.ldb configuration data
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Setting up display specifiers
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Modifying display specifiers and extended rights
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Adding users container
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Modifying users container
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Adding computers container
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Modifying computers container
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Setting up sam.ldb data
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Setting up well known security principals
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Setting up sam.ldb users and groups
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Setting up self join
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Adding DNS accounts
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Creating CN&lt;span style="color:#f92672"&gt;=&lt;/span&gt;MicrosoftDNS,CN&lt;span style="color:#f92672"&gt;=&lt;/span&gt;System,DC&lt;span style="color:#f92672"&gt;=&lt;/span&gt;domaine,DC&lt;span style="color:#f92672"&gt;=&lt;/span&gt;local
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Creating DomainDnsZones and ForestDnsZones partitions
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Populating DomainDnsZones and ForestDnsZones partitions
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Setting up sam.ldb rootDSE marking as synchronized
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Fixing provision GUIDs
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;A Kerberos configuration suitable &lt;span style="color:#66d9ef"&gt;for&lt;/span&gt; Samba AD has been generated at /var/lib/samba/private/krb5.conf
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Merge the contents of this file with your system krb5.conf or replace it with this one. Do not create a symlink!
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Once the above files are installed, your Samba AD server will be ready to use
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Server Role: active directory domain controller
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Hostname: srv-samba
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;NetBIOS Domain: DOMAINE
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;DNS Domain: domaine.local
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;DOMAIN SID: S-1-5-21-1555810112-1359199810-2012430263
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="mise-en-service-du-domaine"&gt;&lt;a href="#mise-en-service-du-domaine" class="header-anchor"&gt;&lt;/a&gt;Mise en service du domaine
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Copier le fichier de configuration de kerberos dans le répertoire &lt;code&gt;/etc&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 cp /var/lib/samba/private/krb5.conf /etc/
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Arrêter les services SMB, NMBD et Bind :&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 systemctl stop smbd nmbd winbind
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Désactiver les services SMB, NMBD et Bind :&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 systemctl disable smbd nmbd winbind
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Rendre visible le service &lt;code&gt;samba-ad-dc&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 systemctl unmask samba-ad-dc
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Démarrer le service :&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 systemctl start samba-ad-dc
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Activer le service :&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 systemctl enable samba-ad-dc
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Vérifier le statut de Samba :&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;smbclient -L localhost -U%
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Tout est OK :&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; Sharename Type Comment
&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; netlogon Disk
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; sysvol Disk
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; IPC$ IPC IPC Service &lt;span style="color:#f92672"&gt;(&lt;/span&gt;Samba 4.9.5-Debian&lt;span style="color:#f92672"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Reconnecting with SMB1 &lt;span style="color:#66d9ef"&gt;for&lt;/span&gt; workgroup listing.
&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 Comment
&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;span style="display:flex;"&gt;&lt;span&gt; Workgroup Master
&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; WORKGROUP SRV-SAMBA
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Vérifier le niveau fonctionnel du domaine :&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 samba-tool domain level show
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Le niveau fonctionnel du domaine est Windows 2008 R2 :&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;Domain and forest &lt;span style="color:#66d9ef"&gt;function&lt;/span&gt; level &lt;span style="color:#66d9ef"&gt;for&lt;/span&gt; domain &lt;span style="color:#e6db74"&gt;&amp;#39;DC=domaine,DC=local&amp;#39;&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;Forest &lt;span style="color:#66d9ef"&gt;function&lt;/span&gt; level: &lt;span style="color:#f92672"&gt;(&lt;/span&gt;Windows&lt;span style="color:#f92672"&gt;)&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;2008&lt;/span&gt; R2
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Domain &lt;span style="color:#66d9ef"&gt;function&lt;/span&gt; level: &lt;span style="color:#f92672"&gt;(&lt;/span&gt;Windows&lt;span style="color:#f92672"&gt;)&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;2008&lt;/span&gt; R2
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Lowest &lt;span style="color:#66d9ef"&gt;function&lt;/span&gt; level of a DC: &lt;span style="color:#f92672"&gt;(&lt;/span&gt;Windows&lt;span style="color:#f92672"&gt;)&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;2008&lt;/span&gt; R2
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="création-utilisateur"&gt;&lt;a href="#cr%c3%a9ation-utilisateur" class="header-anchor"&gt;&lt;/a&gt;Création utilisateur
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Créer un 1er utilisateur dans l'annuaire :&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 samba-tool user create superman
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Indiquer le mot de passe de superman :&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;New Password:
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Retype Password:
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;User &lt;span style="color:#e6db74"&gt;&amp;#39;superman&amp;#39;&lt;/span&gt; created successfully
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="jonction-au-domaine"&gt;&lt;a href="#jonction-au-domaine" class="header-anchor"&gt;&lt;/a&gt;Jonction au domaine
&lt;/h2&gt;&lt;p&gt;La jonction au domaine d'un poste Windows est identique qu'avec un contrôleur de domaine Microsoft. Les outils d'administrations (RSAT) peuvent être employé pour administrer les objets du domaine (dsa.msc), les gpo (gpmc.msc), le serveur dns (dnsmgmt.msc)...&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Avec un DC Microsoft, un compte utilisateur du domaine peut être employé pour joindre un poste au domaine. Avec samba, le compte &lt;strong&gt;administrator&lt;/strong&gt; doit être employé.&lt;/p&gt;
&lt;/blockquote&gt;</description></item></channel></rss>