<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Azure on slash-root.fr</title><link>https://beta.slash-root.fr/categories/azure/</link><description>Recent content in Azure on slash-root.fr</description><generator>Hugo -- gohugo.io</generator><language>fr-fr</language><lastBuildDate>Thu, 07 Dec 2023 10:09:28 +0100</lastBuildDate><atom:link href="https://beta.slash-root.fr/categories/azure/index.xml" rel="self" type="application/rss+xml"/><item><title>OneDrive : Client Linux OpenSource</title><link>https://beta.slash-root.fr/onedrive-client-linux-opensource/</link><pubDate>Fri, 14 Jan 2022 14:56:22 +0100</pubDate><guid>https://beta.slash-root.fr/onedrive-client-linux-opensource/</guid><description>&lt;img src="https://beta.slash-root.fr/onedrive-client-linux-opensource/cover.jpg" alt="Featured image of post OneDrive : Client Linux OpenSource" /&gt;&lt;h2 id="contexte"&gt;&lt;a href="#contexte" class="header-anchor"&gt;&lt;/a&gt;Contexte
&lt;/h2&gt;&lt;p&gt;Dans le cadre de mon travail, j'ai récement migré sur Pop!_OS pour mon environnement du quotidien. Etant un utilisateur de plusieurs comptes OneDrive (perso &amp;amp; pro), il me fallait pouvoir synchroniser ceux-ci dans des dossiers différents de mon système.&lt;/p&gt;
&lt;p&gt;Par exemple :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Mon compte OneDrive perso dans &lt;code&gt;~/OneDrive_Perso&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Mon compte OneDrive pro dans &lt;code&gt;~/OneDrive_Pro&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Bien evidément, cela doit fonctionner en tant que service.&lt;/p&gt;
&lt;p&gt;Je suis tombé sur ce projet : &lt;a href="https://github.com/skilion/onedrive"&gt;https://github.com/skilion/onedrive&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Update 07/12/2023 :&lt;br /&gt;
Le projet utilisé dans cet article est stoppé.&lt;br /&gt;
Utiliser / Adapter avec celui-ci : &lt;a href="https://github.com/abraunegg/onedrive.git"&gt;https://github.com/abraunegg/onedrive.git&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;C'est un outil sous licence GPL3 permettant d'intéragir avec OneDrive sous Linux.&lt;/p&gt;
&lt;p&gt;Les fonctionnalités sont les suivantes : &lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;State caching&lt;/li&gt;
&lt;li&gt;Real-Time file monitoring with Inotify&lt;/li&gt;
&lt;li&gt;Resumable uploads&lt;/li&gt;
&lt;li&gt;Support OneDrive for Business (part of Office 365)&lt;/li&gt;
&lt;li&gt;Shared folders (only OneDrive Personal)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;J'ajouterai également qu'il est possible de faire du multi-comptes.&lt;/p&gt;
&lt;p&gt;C'est parfait car c'est mon besoin 🙂&lt;/p&gt;
&lt;h2 id="installation"&gt;&lt;a href="#installation" class="header-anchor"&gt;&lt;/a&gt;Installation
&lt;/h2&gt;&lt;p&gt;Pour information, j'ai réalisé cette installation sous Pop!_OS 21.10 mais celle-ci devrait fonctionner à partir des dérivés d'Ubuntu 18+. Pour Fedora, CentOS, ArchLinux, se référer directement à la page du projet cité plus haut.&lt;/p&gt;
&lt;p&gt;Tout d'abord l'installation des pré-requis :&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 git libcurl4-openssl-dev libsqlite3-dev snap snapd
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;sudo snap install --classic dmd
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Puis le clonage du projet et l'installation de l'outil :&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;git clone https://github.com/skilion/onedrive.git
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;cd onedrive
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;make
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;sudo make install
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="configuration"&gt;&lt;a href="#configuration" class="header-anchor"&gt;&lt;/a&gt;Configuration
&lt;/h2&gt;&lt;p&gt;La configuration est optionnelle. Par défaut, tous les fichiers seront stockés dans &lt;code&gt;~/OneDrive&lt;/code&gt; et les fichiers/dossiers commençant par &lt;code&gt;.&lt;/code&gt; et &lt;code&gt;~&lt;/code&gt; seront ignorés.&lt;/p&gt;
&lt;p&gt;3 directives sont définissables :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;sync_dir&lt;/code&gt; : Le répertoire où seront stockés les données.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;skip_file&lt;/code&gt; : Les fichiers / dossiers à ne pas synchroniser. L'utilisation des wildcards &lt;code&gt;*&lt;/code&gt; et &lt;code&gt;?&lt;/code&gt; sont autorisés. Le &lt;code&gt;|&lt;/code&gt; peut être employé pour séparer différents patterns.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;L'outil doit être relancé avec l'argument &lt;code&gt;--resync&lt;/code&gt; après une modification de la directive &lt;code&gt;skip_file&lt;/code&gt;.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;sync_list&lt;/code&gt; : Spécifier les fichiers / dossiers à synchroniser. J'en parlerai dans un prochain article.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;L'outil doit être relancé avec l'argument &lt;code&gt;--resync&lt;/code&gt; après une modification de la directive &lt;code&gt;skip_file&lt;/code&gt;.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Comme je veux utiliser 2 configurations différentes (une perso et une pro), j'ai créé 1 répertoire pour chaque compte où seront stockés mes données respectives :&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 -p ~/&lt;span style="color:#f92672"&gt;{&lt;/span&gt;OneDrive_Perso,OneDrive_Pro&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;p&gt;Ensuite, j'ai créé 2 dossiers de configuration (un dossier par compte) :&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 -p ~/.config/&lt;span style="color:#f92672"&gt;{&lt;/span&gt;onedrive_perso,onedrive_pro&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;p&gt;J'ai ensuite créé mes 2 fichiers de configurations (un fichier par compte).&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;OneDrive perso :&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 &amp;gt; ~/.config/onedrive_perso/config &lt;span style="color:#e6db74"&gt;&amp;lt;&amp;lt; EOF
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#e6db74"&gt;# Directory where the files will be synced
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#e6db74"&gt;sync_dir = &amp;#34;~/OneDrive_Perso&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#e6db74"&gt;# Skip files and directories that match this pattern
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#e6db74"&gt;skip_file = &amp;#34;.*|~*&amp;#34;
&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;/li&gt;
&lt;li&gt;
&lt;p&gt;OneDrive pro :&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 &amp;gt; ~/.config/onedrive_pro/config &lt;span style="color:#e6db74"&gt;&amp;lt;&amp;lt; EOF
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#e6db74"&gt;# Directory where the files will be synced
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#e6db74"&gt;sync_dir = &amp;#34;~/OneDrive_Pro&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#e6db74"&gt;# Skip files and directories that match this pattern
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#e6db74"&gt;skip_file = &amp;#34;.*|~*&amp;#34;
&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;/li&gt;
&lt;/ul&gt;
&lt;h2 id="initialisation"&gt;&lt;a href="#initialisation" class="header-anchor"&gt;&lt;/a&gt;Initialisation
&lt;/h2&gt;&lt;p&gt;L'étape suivante que j'ai réalisé a été de lier chaque configuration (perso et pro) à un compte OneDrive. Pour se faire j'ai exécuté dans un 1er temps la synchronisation de mon OneDrive perso :&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;onedrive --monitor --confdir&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#e6db74"&gt;&amp;#34;~/.config/onedrive_perso&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Un lien est 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-shell" data-lang="shell"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Authorize this app visiting:
&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;https://login.microsoftonline.com/common/oauth2/v2.0/authorize?client_id&lt;span style="color:#f92672"&gt;=&lt;/span&gt;22c49a0d-d21c-4792-aed1-8f163c982546&amp;amp;scope&lt;span style="color:#f92672"&gt;=&lt;/span&gt;files.readwrite%20files.readwrite.all%20offline_access&amp;amp;response_type&lt;span style="color:#f92672"&gt;=&lt;/span&gt;code&amp;amp;redirect_uri&lt;span style="color:#f92672"&gt;=&lt;/span&gt;https://login.microsoftonline.com/common/oauth2/nativeclient
&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;Enter the response uri:
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;En visitant cette URL, une authentification sur le compte OneDrive désiré est demandé. Puis, viens une page blanche (ou noire suivant votre thème) :&lt;/p&gt;
&lt;p&gt;&lt;img data-recalc-dims="1" decoding="async" src="URI_init.png" alt="" /&gt;&lt;/p&gt;
&lt;p&gt;J'ai copié l'URI de cette page en réponse à mon prompt &lt;code&gt;Enter the response uri:&lt;/code&gt; &lt;/p&gt;
&lt;p&gt;La synchro démarre (oui, j'aime bien watch dogs legion...) :&lt;/p&gt;
&lt;p&gt;&lt;img data-recalc-dims="1" decoding="async" src="sync_init.png" alt="" /&gt;&lt;/p&gt;
&lt;p&gt;Ensuite, je teste mon compte OneDrive_Pro :&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;onedrive --monitor --confdir&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#e6db74"&gt;&amp;#34;~/.config/onedrive_pro&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;blockquote&gt;
&lt;p&gt;Il est important de libèrer le token office avant. J'étais, au préalablement, identifié sur mon compte perso.&lt;/p&gt;
&lt;p&gt;Pour cela, je me suis déconnecté avec mon navigateur internet de mon compte office perso précédement connecté à l'aide de l'URL suivante : &lt;a href="https://www.office.com/?auth=2"&gt;https://www.office.com/?auth=2&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;img data-recalc-dims="1" decoding="async" src="URI_pro.png" alt="" /&gt;&lt;/p&gt;
&lt;h2 id="5-services"&gt;&lt;a href="#5-services" class="header-anchor"&gt;&lt;/a&gt;5. Services
&lt;/h2&gt;&lt;p&gt;Lors de l'installation de l'outil un service a été créé : &lt;code&gt;/usr/lib/systemd/user/onedrive.service&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;J'ai décidé de garder ce service pour mon compte perso et d'en créer un second pour mon compte pro :&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;cp /usr/lib/systemd/user/onedrive.service /usr/lib/systemd/user/onedrive_pro.service
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;J'ai ensuite édité mon 1er service (onedrive perso) pour correspondre à sa configuration :&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;vi /usr/lib/systemd/user/onedrive.service
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Puis, j'ai modifié la ligne &lt;code&gt;ExecStart&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-ini" data-lang="ini"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#a6e22e"&gt;ExecStart&lt;/span&gt;&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#e6db74"&gt;/usr/local/bin/onedrive --monitor --confdir=&amp;#34;~/.config/onedrive_perso&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Et enfin la même modification pour mon serive OneDrive pro :&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;vi /usr/lib/systemd/user/onedrive_pro.service
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Cette fois-ci, j'ai modifié comme suit :&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;ExecStart&lt;/span&gt;&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#e6db74"&gt;/usr/local/bin/onedrive --monitor --confdir=&amp;#34;~/.config/onedrive_pro&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Pour terminer, j'ai activé mes 2 services :&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;systemctl --user enable onedrive.service
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;systemctl --user enable onedrive_pro.service
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;systemctl --user start onedrive.service
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;systemctl --user start onedrive_pro.service
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="6-vérifications--logs"&gt;&lt;a href="#6-v%c3%a9rifications--logs" class="header-anchor"&gt;&lt;/a&gt;6. Vérifications / Logs
&lt;/h2&gt;&lt;p&gt;Pour vérifier le bon fonctionnement des services, j'utilise ces 2 commandes :&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;journalctl --user-unit onedrive -f
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;journalctl --user-unit onedrive_pro -f
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="7-désinstallation"&gt;&lt;a href="#7-d%c3%a9sinstallation" class="header-anchor"&gt;&lt;/a&gt;7. Désinstallation
&lt;/h2&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 make uninstall
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;rm -rf ~/.config/onedrive*
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&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>