<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Authentification on Zwindler's Reflection</title><link>https://blog.zwindler.fr/tags/authentification/</link><description>Recent content in Authentification on Zwindler's Reflection</description><generator>Hugo -- gohugo.io</generator><language>fr-fr</language><copyright>Licensed under CC BY-SA 4.0</copyright><lastBuildDate>Tue, 14 May 2019 11:45:56 +0000</lastBuildDate><atom:link href="https://blog.zwindler.fr/tags/authentification/index.xml" rel="self" type="application/rss+xml"/><item><title>Déléguer l’authentification Gitlab à Azure AD avec OAuth2</title><link>https://blog.zwindler.fr/2019/05/14/deleguer-lauthentification-gitlab-a-azure-ad-avec-oauth2/</link><pubDate>Tue, 14 May 2019 11:45:56 +0000</pubDate><guid>https://blog.zwindler.fr/2019/05/14/deleguer-lauthentification-gitlab-a-azure-ad-avec-oauth2/</guid><description>&lt;img src="https://blog.zwindler.fr/2019/05/gitlab_azuread-1.webp" alt="Featured image of post Déléguer l’authentification Gitlab à Azure AD avec OAuth2" /&gt;&lt;h2 id="gérer-les-comptes-internes-à-gitlab-cest-bof-le-sso-cest-mieux-"&gt;Gérer les comptes internes à Gitlab, c’est bof, le SSO, c’est mieux !
&lt;/h2&gt;&lt;p&gt;Dans le cadre de l’hébergement d’un nouveau serveur Gitlab, j’ai voulu intégrer notre base de compte existante, synchronisée dans Azure à l’aide de l’outil Azure AD, qui est le pendant « cloud » de l’Active Directory, bien connus de mes amis Windowiens (oui, il y en a). La plupart des applications savent aujourd’hui déléguer l’authentification à des fournisseurs tiers, généralement de type LDAP, via des protocoles tels que SAML(2) ou OAuth(2).&lt;/p&gt;
&lt;p&gt;Cependant, bien que ces protocoles soient standards, leur implémentation dépend fortement du logiciel en question et il n’est pas toujours facile de s’y retrouver.&lt;/p&gt;
&lt;p&gt;Pour faciliter cette opération, Azure a mis à disposition, directement dans Azure AD, des objets préconfigurés pour des milliers d’applications tierces. C’est comme ça qu’on peut implémenter, de manière simple et rapide, le SSO Active Directory avec les produits Atlassian (JIRA + Confluence), par exemple.&lt;/p&gt;
&lt;h2 id="tout-commence-dans-azure"&gt;Tout commence dans Azure
&lt;/h2&gt;&lt;p&gt;Dans le portail Azure, ouvrir « Entreprise applications », puis cliquer sur « New Application »&lt;/p&gt;
&lt;p&gt;&lt;img src="https://blog.zwindler.fr/2019/05/git_azuread1.avif"
loading="lazy"
&gt;&lt;/p&gt;
&lt;p&gt;Malheureusement pour nous, il n’y a pas de template pour Gitlab ! Il va falloir le faire à la main.&lt;/p&gt;
&lt;p&gt;A noter, le principe déroulé dans ce tutoriel est valable pour n’importe quelle autre application supportant des mécanismes similaire. Il est possible de réutiliser un template utilisé pour un soft et le réadapter pour d’autres logiciels qui fonctionnent de la même façon. C’est juste une histoire de paramètres.&lt;/p&gt;
&lt;p&gt;&lt;img src="https://blog.zwindler.fr/2019/05/git_azuread2.avif"
loading="lazy"
&gt;&lt;/p&gt;
&lt;p&gt;Le menu nous conseille donc de choisir « Non-gallery application », puisque nous ne trouvons pas Gitlab. Sauf que, bizarrement, il faut un compte Premium pour utiliser cette feature.&lt;/p&gt;
&lt;p&gt;On se rabat donc sur « Application you’re developing ». C’est d’ailleurs ce que conseille d’utiliser &lt;a class="link" href="https://docs.gitlab.com/ee/integration/azure.html" target="_blank" rel="noopener"
&gt;la documentation de Gitlab&lt;/a&gt;. Sauf que, pas de chance non plus, ça ne marche plus comme ça, maintenant ;)&lt;/p&gt;
&lt;p&gt;&lt;img src="https://blog.zwindler.fr/2019/05/git_azuread3.avif"
loading="lazy"
&gt;&lt;/p&gt;
&lt;h2 id="créer-une-app-registration-pour-gitlab"&gt;Créer une App registration pour Gitlab
&lt;/h2&gt;&lt;p&gt;Pour toutes les applications qui ne sont pas dans le store, on ne peut donc plus passer par les « Entreprise Applications ». On va donc créer une « App registration », qui n’est ni plus ni moins qu’un compte de service avec un ID et un (ou plusieurs) secrets.&lt;/p&gt;
&lt;p&gt;Cliquer sur « New registration », puis lui donner un nom.&lt;/p&gt;
&lt;p&gt;Sélectionner le type de comptes qui pourront accéder à cette application. Dans mon cas, il s’agit uniquement d’autoriser les comptes provenant de mon AD, mais on peut imaginer le cas d’une application ouverte en BtoB ou carrément ouverte à tout Internet.&lt;/p&gt;
&lt;p&gt;Enfin, renseigner l’URL de callback, qui permettra à Azure de rediriger l’utilisateur qui s’est authentifié avec succès vers notre Gitlab.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;We’ll return the authentication response to this URI after successfully authenticating the user. Providing this now is optional and it can be changed later, but a value is required for most authentication scenarios.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Dans le cas précis de Gitlab, cette URL aura la forme : &lt;a class="link" href="https://mongitlab.example.org/users/auth/azure_oauth2/callback" target="_blank" rel="noopener"
&gt;mongitlab.example.org/users/auth/azure_oauth2/callback&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src="https://blog.zwindler.fr/2019/05/git_azuread4-1.avif"
loading="lazy"
&gt;&lt;/p&gt;
&lt;h2 id="récupérer-des-valeurs-qui-intéressent-gitlab"&gt;Récupérer des valeurs qui intéressent Gitlab
&lt;/h2&gt;&lt;p&gt;Retourner ensuite dans l’overview de notre nouvelle « App registration ». Dans les détails, elle dispose d’un Application ID, aussi appelé Client ID et d’un Tenant ID :&lt;/p&gt;
&lt;p&gt;&lt;img src="https://blog.zwindler.fr/2019/05/git_azuread5.avif"
loading="lazy"
&gt;&lt;/p&gt;
&lt;p&gt;On va maintenant créer un Secret. Pour les secrets, on peut choisir soit d’uploader un certificat (conseillé car plus sécurisé), ou de lui générer un mot de passe. Pour la simplicité de ce tutoriel, je vais créer un mot de passe pour notre application, mais je le répète, mieux vaut uploader un certificat.&lt;/p&gt;
&lt;p&gt;&lt;img src="https://blog.zwindler.fr/2019/05/git_azuread6.avif"
loading="lazy"
&gt;&lt;/p&gt;
&lt;p&gt;On dispose maintenant de notre CLIENT_ID, notre TENANT_ID et de notre CLIENT_SECRET. Notez les bien, car une fois que la fenêtre sera fermée, il ne sera plus possible de relire à nouveau le secret et il faudra en générer un nouveau&amp;hellip;&lt;/p&gt;
&lt;h2 id="ajouter-des-restrictions-ou-des-fonctionnalités-complémentaires"&gt;Ajouter des restrictions ou des fonctionnalités complémentaires
&lt;/h2&gt;&lt;p&gt;En fonction de votre niveau de licence pour Azure AD, vous aurez accès à plus ou moins de choses. Moi, je n’ai accès à pratiquement aucune feature, mais si vous avez mieux, vous aller pouvoir ajouter des options très pratiques telles que le self service (les utilisateurs peuvent demander eux même à avoir accès à l’application, et si c’est validé, ils sont ajouté dans le bon groupe) et aux autorisations/restrictions par groupes Azure AD.&lt;/p&gt;
&lt;p&gt;Pour se faire, il faut RETOURNER dans les Entreprises Applications (#RollingEyes), puis chercher notre « App registration » qui y apparaît maintenant dans la liste (avec le filtre All applications).&lt;/p&gt;
&lt;p&gt;&lt;img src="https://blog.zwindler.fr/2019/05/git_azuread7.avif"
loading="lazy"
&gt;&lt;/p&gt;
&lt;h2 id="configuration-de-gitlab"&gt;Configuration de Gitlab
&lt;/h2&gt;&lt;p&gt;Gitlab ayant été installé avec les packages, la configuration se situe dans le fichier &lt;strong&gt;/etc/gitlab/gitlab.rb&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;Dans le fichier de configuration, ajouter le bloc suivant en remplaçant les valeurs en majuscules par celles qu’on vient de récupérer :&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;gitlab_rails[&amp;#39;omniauth_providers&amp;#39;] = [
{
&amp;#34;name&amp;#34; =&amp;gt; &amp;#34;azure_oauth2&amp;#34;,
&amp;#34;args&amp;#34; =&amp;gt; {
&amp;#34;client_id&amp;#34; =&amp;gt; &amp;#34;CLIENT_ID&amp;#34;,
&amp;#34;client_secret&amp;#34; =&amp;gt; &amp;#34;CLIENT_SECRET&amp;#34;,
&amp;#34;tenant_id&amp;#34; =&amp;gt; &amp;#34;TENANT_ID&amp;#34;,
}
}
]
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Rechargez ensuite Gitlab pour prise en compte de ce nouveau paramètre&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;sudo gitlab-ctl reconfigure
[...]
Running handlers complete
Chef Client finished, 13/637 resources updated in 26 seconds
gitlab Reconfigured!
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Une boite d’authentification Azure Oauth2 devrait apparaître sous le login classique !! Youpi :)&lt;/p&gt;
&lt;p&gt;&lt;img src="https://blog.zwindler.fr/2019/05/git_azuread8.avif"
loading="lazy"
&gt;&lt;/p&gt;
&lt;h2 id="et-voilà-cest-fini-ou-presque"&gt;Et voilà c’est fini&amp;hellip; ou presque&amp;hellip;
&lt;/h2&gt;&lt;p&gt;Vous avez maintenant ajouté du SSO et l’authentification via Azure AD pour l’accès à votre Gitlab ! On essaye de se connecter ?&lt;/p&gt;
&lt;p&gt;Et Paf !!&lt;/p&gt;
&lt;p&gt;&lt;img src="https://blog.zwindler.fr/2019/05/git_azuread9.avif"
loading="lazy"
&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Signing in using your Azure Oaut2 account without a pre-existing gitLab account is not allowed&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;En fait, c’est normal.&lt;/p&gt;
&lt;p&gt;Par défaut, il n’est pas possible de s’authentifier avec Azure Oauth2 si un compte n’existe pas préalablement dans Gitlab, ce qui est quand même bien dommage si vous avez beaucoup de comptes à créer.&lt;/p&gt;
&lt;p&gt;Deux cas de figure.&lt;/p&gt;
&lt;h3 id="soit-vous-ne-souhaitez-pas-que-nimporte-qui-dans-votre-ad-puisse-se-connecter-sans-votre-accord-préalable"&gt;Soit vous ne souhaitez pas que n’importe qui dans votre AD puisse se connecter sans votre accord préalable
&lt;/h3&gt;&lt;p&gt;Dans ce cas là, ce cas vous est finalement assez favorable, puisque vous allez pouvoir explicitement dire qui peut ou ne peut pas se connecter. Si vous ne disposez pas des bonnes licences et que vous avez pas pu restreindre l’accès à un groupe d’utilisateurs, c’est une « solution » de contournement acceptable.&lt;/p&gt;
&lt;p&gt;Cependant, pour éviter de créer à la main tous les comptes, il sera probablement préférable de les créer de manière automatique &lt;a class="link" href="https://docs.gitlab.com/ee/api/" target="_blank" rel="noopener"
&gt;à l’aide de l’API Gitlab&lt;/a&gt; et même &lt;a class="link" href="https://docs.ansible.com/ansible/latest/modules/gitlab_user_module.html" target="_blank" rel="noopener"
&gt;du très bon module Ansible gitlab_user&lt;/a&gt; :&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;- name: &amp;#34;Create Gitlab User&amp;#34;
gitlab_user:
server_url: &amp;#34;{{gitlab_api}}&amp;#34;
login_token: &amp;#34;{{token}}&amp;#34;
validate_certs: True
name: &amp;#34;Zwindler&amp;#34;
username: &amp;#34;zwindler&amp;#34;
password: &amp;#34;{{ 99999999 | random | to_uuid }}&amp;#34;
confirm: no
email: &amp;#34;zwindler@zwindler.fr&amp;#34;
state: present
&lt;/code&gt;&lt;/pre&gt;&lt;h3 id="soit-à-linverse-vous-souhaitez-que-tous-les-utilisateurs-de-votre-ad-puissent-avoir-accès-sans-pour-autant-devoir-les-ajouter-uns-par-uns"&gt;Soit, à l’inverse, vous souhaitez que tous les utilisateurs de votre AD puissent avoir accès, sans pour autant devoir les ajouter uns par uns
&lt;/h3&gt;&lt;p&gt;Il existe alors des lignes sont à ajouter dans la configuration gitlab pour autoriser cette option :&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;gitlab_rails[&amp;#39;omniauth_allow_single_sign_on&amp;#39;] = [&amp;#39;azure_oauth2&amp;#39;]
gitlab_rails[&amp;#39;omniauth_block_auto_created_users&amp;#39;] = false
gitlab_rails[&amp;#39;sync_profile_from_provider&amp;#39;] = [&amp;#39;azure_oauth2&amp;#39;]
gitlab_rails[&amp;#39;sync_profile_attributes&amp;#39;] = [&amp;#39;name&amp;#39;, &amp;#39;email&amp;#39;]
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;D’un point de vue sécurité, c’est un peu moins bien puisque n’importe qui avec un compte pourra se connecter, sans que vous le sachiez.&lt;/p&gt;
&lt;p&gt;Cependant, ce problème est un peu moins grave qu’il n’y parait puisque l’utilisateur sera logué mais n’aura accès à rien (ou juste ce qui est « public »).&lt;/p&gt;
&lt;p&gt;Dans le cas d’un Gitlab d’entreprise, où tous les développeurs doivent pouvoir se connecter, cette seconde option me parait quasi obligatoire. C’est encore plus acceptable si vous avez pu restreindre l’accès au SSO par groupe dans Azure AD, comme indiqué plus haut.&lt;/p&gt;
&lt;p&gt;Have fun :)&lt;/p&gt;
&lt;h2 id="sources"&gt;Sources
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;a class="link" href="https://docs.gitlab.com/ee/integration/azure.html" target="_blank" rel="noopener"
&gt;docs.gitlab.com/ee/integration/azure.html&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="link" href="https://serverfault.com/questions/874484/gitlab-and-oauth-to-azure-ad" target="_blank" rel="noopener"
&gt;serverfault.com/questions/874484/gitlab-and-oauth-to-azure-ad&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>« la Connexion Bureau à Distance ne peut pas vérifier l’identité » depuis un Mac/OSX vers Windows 2008+</title><link>https://blog.zwindler.fr/2015/06/05/la-connexion-bureau-a-distance-ne-peut-pas-verifier-lidentite-depuis-un-macosx-vers-windows-2008/</link><pubDate>Fri, 05 Jun 2015 13:36:49 +0000</pubDate><guid>https://blog.zwindler.fr/2015/06/05/la-connexion-bureau-a-distance-ne-peut-pas-verifier-lidentite-depuis-un-macosx-vers-windows-2008/</guid><description>&lt;img src="https://blog.zwindler.fr/2015/06/mac01.webp" alt="Featured image of post « la Connexion Bureau à Distance ne peut pas vérifier l’identité » depuis un Mac/OSX vers Windows 2008+" /&gt;&lt;p&gt;On ne peut pas dire que je sois un grand partisan d’Apple, mais il arrive parfois que des VIPs souhaitent se connecter sur les serveurs Windows en bureau à distance (RDP). Et quand on n’y connait rien car on n’en utilise pas, c’est parfois un peu déroutant.&lt;/p&gt;
&lt;p&gt;Ici, le mac refusait de se connecter au serveur Windows 2008, qui autorisait pourtant les connexions RDP. En fait, le souci se situait au niveau de l’acceptation du certificat délivré par le serveur 2008r2 (qui venait d’être migré depuis un 2003, qui ne dispose pas de cette sécurité).&lt;/p&gt;
&lt;h2 id="symptôme"&gt;Symptôme
&lt;/h2&gt;&lt;p&gt;Le message d’erreur suivant apparait suite à l’authentification sur la mire d’un serveur Windows 2008 ou plus sur un Mac. Le serveur répond bien au ping (puisqu’on a la mire). On s’est assuré que le mot de passe entré est correct.&lt;/p&gt;
&lt;p&gt;&lt;img src="https://blog.zwindler.fr/2015/06/mac01.avif"
loading="lazy"
&gt;&lt;/p&gt;
&lt;h2 id="résolution"&gt;Résolution
&lt;/h2&gt;&lt;p&gt;Comme je l’ai dis en introduction, il s’agit ici d’un défaut du client RDP sur OSX qui gère mal les authentifications avancées de Windows 7 et 2008R2 et plus. Pour résoudre ce problème, il y a plusieurs manipulations à effectuer.&lt;/p&gt;
&lt;h3 id="suppression-des-entrées-dans-le-trousseau"&gt;Suppression des entrées dans le trousseau
&lt;/h3&gt;&lt;p&gt;La première chose à faire est d’abord de supprimer toutes les entrées correspondantes aux connexions RDP dans le trousseau de compte Mac&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Ouvrir le finder&lt;/li&gt;
&lt;li&gt;Aller dans Applications&lt;/li&gt;
&lt;li&gt;Aller dans le dossier Utilitaires&lt;/li&gt;
&lt;li&gt;Ouvrir trousseaux d’accès&lt;/li&gt;
&lt;li&gt;Supprimer les lignes avec « remote desktop connection »&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;ATTENTION : faire un clic droit sur la ligne pour supprimer et ne pas utiliser le menu dans le haut. Sinon il y a risque de supprimer tous les enregistrements.&lt;/p&gt;
&lt;p&gt;&lt;img src="https://blog.zwindler.fr/2015/06/mac4.avif"
loading="lazy"
&gt;&lt;/p&gt;
&lt;p&gt;Lors de la prochaine connexion, &lt;strong&gt;ne pas cocher&lt;/strong&gt; d’ajouter les informations au trousseau.&lt;/p&gt;
&lt;p&gt;&lt;img src="https://blog.zwindler.fr/2015/06/mac5-1.avif"
loading="lazy"
&gt;&lt;/p&gt;
&lt;h3 id="modification-du-rdp"&gt;Modification du .rdp
&lt;/h3&gt;&lt;p&gt;Si le problème persiste, il est probable que les informations de connexion soient contenues dans le RDP. Lorsque l’authentification échoue, ouvrir les préférences du fichier RDP en cliquant sur &lt;strong&gt;CBD&lt;/strong&gt; en haut à gauche, puis sur &lt;strong&gt;Préférences&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src="https://blog.zwindler.fr/2015/06/mac2.avif"
loading="lazy"
&gt;&lt;/p&gt;
&lt;p&gt;Dans l’onglet &lt;strong&gt;Session&lt;/strong&gt;, vider la case &lt;strong&gt;Domaine&lt;/strong&gt; et décocher les cases&lt;/p&gt;
&lt;p&gt;&lt;img src="https://blog.zwindler.fr/2015/06/mac6-1.avif"
loading="lazy"
&gt;&lt;/p&gt;
&lt;p&gt;Dans l’onglet &lt;strong&gt;Sécurité&lt;/strong&gt;, cocher la case &lt;strong&gt;Toujours se connecter&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src="https://blog.zwindler.fr/2015/06/mac3.avif"
loading="lazy"
&gt;&lt;/p&gt;
&lt;p&gt;Quitter les préférences et enregistrer quand le Mac le demande pour mettre à jour le .rdp&lt;/p&gt;</description></item><item><title>Mise en place de Guacamole 0.9.5 sur CentOS 7</title><link>https://blog.zwindler.fr/2015/05/31/mise-en-place-de-guacamole-0-9-5-sur-centos-7/</link><pubDate>Sun, 31 May 2015 09:49:36 +0000</pubDate><guid>https://blog.zwindler.fr/2015/05/31/mise-en-place-de-guacamole-0-9-5-sur-centos-7/</guid><description>&lt;img src="https://blog.zwindler.fr/2015/05/guac-tricolor.webp" alt="Featured image of post Mise en place de Guacamole 0.9.5 sur CentOS 7" /&gt;&lt;p&gt;&lt;strong&gt;Pour information&lt;/strong&gt; : je me suis basé sur le très bon article de &lt;strong&gt;Deviant Engineer&lt;/strong&gt;, qui est concis, s’affranchit de la conf par fichier plat au profit du module MySQL, &lt;strong&gt;et surtout&lt;/strong&gt; qui fonctionne, ce qui n’est pas le cas de tous les tutoriels que j’ai pu croiser sur la toile.&lt;/p&gt;
&lt;p&gt;Aujourd’hui, au même titre que l’informatique s’est généralisée, Internet est de plus en plus présent, où qu’on se trouve. Mais ce n’est pas toujours un Internet comme à la maison.&lt;/p&gt;
&lt;p&gt;Pour des raisons de sécurité et/ou de bande passante, certains ports/protocoles/site web sont souvent bloqués sur les points d’accès public ou d’entreprise. Il n’est pas rare que seul l’HTTP et l’HTTPS soient disponible, me privant ainsi de mes accès SSH/VPN/FTP/&amp;hellip;&lt;br&gt;
C’est un vrai casse tête pour moi : je déploie des services chez moi et j’en deviens dépendant au point d’être agacé de ne pas y avoir accès en toutes circonstances. Et plutôt que de relativiser cet absence d’accès absolu à mes services/données, je préfère chercher des moyens de contournement ;).&lt;/p&gt;
&lt;p&gt;Si l’autohébergement d’applications web et l’utilisation d’un reverse proxy (Vulture/Apache) répond à une partie de cette problématique, des fois, j’ai parfois besoin d’avoir accès aux machines qui hébergent ces services. C’est pourquoi j’utilisais jusqu’à présent Ajaxterm, puis Gateone pour disposer d’un accès SSH à mes serveurs en cas de filtrage.&lt;/p&gt;
&lt;p&gt;Cependant, j’ai aussi besoin de me connecter en mode graphique sur mes serveurs. En présentant au travers d’une interface HTML5 des clients pour les protocoles SSH, VNC et RDP, Guacamole répond à ce besoin.&lt;/p&gt;
&lt;p&gt;Quelques ressources pour bien commencer :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a class="link" href="http://guac-dev.org/" target="_blank" rel="noopener"
&gt;le site officiel&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="link" href="http://guac-dev.org/doc/gug/installing-guacamole.html" target="_blank" rel="noopener"
&gt;la documentation d’installation officielle&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="link" href="https://web.archive.org/web/20160814174529/https://deviantengineer.com/2015/02/guacamole-centos7/" target="_blank" rel="noopener"
&gt;le tutoriel de Devian Engineer (lien mort, j&amp;rsquo;utilise Internet Archive)&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;La documentation officielle décrit comment l’installer à partir des sources. Cependant, sur certains systèmes, les applications ont été packagées et sont disponibles (0.8.4 si je ne m’abuse sur RHEL et CentOS). Je voulais avoir la version la plus récente, je me suis donc penché sur la solution « compilation ».&lt;/p&gt;
&lt;p&gt;Et pour avoir une compatibilité maximale en terme de fonctionnalités, il faut disposer de Tomcat 7, présent nativement dans RHEL7/CentOS7, que j’ai donc installé (mon premier CentOS7, youhou !)&lt;/p&gt;
&lt;h2 id="prérequis"&gt;Prérequis
&lt;/h2&gt;&lt;p&gt;Forcément, la première chose à faire lorsqu’on installe une application web un peu exotique sur un CentOS, c’est d’installer les dépôts additionnels pour les dépendances (ici EPEL).&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;rpm -Uvh http://mirror.metrocast.net/fedora/epel/7/x86_64/e/epel-release-7-5.noarch.rpm # EPEL Repo
yum -y install wget
wget http://download.opensuse.org/repositories/home:/felfert/Fedora_19/home:felfert.repo &amp;amp;&amp;amp; mv home\:felfert.repo /etc/yum.repos.d/ # Felfert Repo
yum -y install tomcat libvncserver freerdp libvorbis libguac libguac-client-vnc libguac-client-rdp libguac-client-ssh
yum -y install cairo-devel pango-devel libvorbis-devel openssl-devel gcc pulseaudio-libs-devel libvncserver-devel \
freerdp-devel uuid-devel libssh2-devel libtelnet libtelnet-devel tomcat-webapps tomcat-admin-webapps java-1.7.0-openjdk.x86_64
&lt;/code&gt;&lt;/pre&gt;&lt;h2 id="installation-du-composant-serveur"&gt;Installation du composant « serveur »
&lt;/h2&gt;&lt;p&gt;Le logiciel est découpé en deux parties. Une partie « serveur » qui correspond au portail web, et une partie dite « cliente », qui se charge de la connexion aux différents serveurs SSH/&lt;del&gt;telnet&lt;/del&gt;/VNC/RDP que vous aurez configurés. J’ai rayé telnet car je refuse d’utiliser ce protocole (à l’exception de certaines contraintes de travail très particulières).&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;cd /distrib
wget http://sourceforge.net/projects/guacamole/files/current/source/guacamole-server-0.9.5.tar.gz
tar -xzf guacamole-server-0.9.5.tar.gz &amp;amp;&amp;amp; cd guac*0.9.5
./configure --with-init-dir=/etc/init.d
make
make install
ldconfig
&lt;/code&gt;&lt;/pre&gt;&lt;h2 id="installation-du-du-composant-client"&gt;Installation du du composant « client »
&lt;/h2&gt;&lt;p&gt;La partie client peut directement être récupérée tel quel sur le site du projet.&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;mkdir -p /var/lib/guacamole &amp;amp;&amp;amp; cd /var/lib/guacamole/
wget http://sourceforge.net/projects/guacamole/files/current/binary/guacamole-0.9.5.war -O guac.war
ln -s /var/lib/guacamole/guac.war /var/lib/tomcat/webapps/
rm -rf /usr/lib64/freerdp/guacdr.so
ln -s /usr/local/lib/freerdp/guacdr.so /usr/lib64/freerdp/
&lt;/code&gt;&lt;/pre&gt;&lt;h2 id="mariadb-mysql"&gt;MariaDB (MySQL)
&lt;/h2&gt;&lt;p&gt;Ne soyez pas surpris de découvrir MariaDB. MariaDB, c’est MySQL. Ou plutôt ce que MySQL aurait du devenir. Il s’agit d’un fork de MySQL initié par son créateur qui a réalisé qu’Oracle (qui a racheté Sun Microsystems en 2009) risquait d’envoyer le produit dans le mur (en concurrence avec Oracle Database).&lt;br&gt;
MariaDB a donc progressivement remplacé MySQL dans les communautés Open Source et les entreprises (citons Google en 2013), et RedHat a suivi le mouvement avec la version 7 de RHEL.&lt;br&gt;
Pas de mauvaise surprise si vous êtes habitués à MySQL : tout est identique en terme d’administration. Vos scripts fonctionneront toujours, les binaires n’ont pas changés.&lt;/p&gt;
&lt;h3 id="installation-de-la-base-de-données"&gt;Installation de la base de données
&lt;/h3&gt;&lt;pre tabindex="0"&gt;&lt;code&gt;yum -y install mariadb mariadb-server
cd /distrib
wget http://sourceforge.net/projects/guacamole/files/current/extensions/guacamole-auth-mysql-0.9.5.tar.gz
tar -zxf guacamole-auth-mysql-0.9.5.tar.gz
wget http://dev.mysql.com/get/Downloads/Connector/j/mysql-connector-java-5.1.32.tar.gz
tar -zxf mysql-connector-java-5.1.32.tar.gz
mv mysql-connector-java-5.1.32/mysql-connector-java-5.1.32-bin.jar guacamole-auth-mysql-0.9.5/lib/
mkdir /var/lib/guacamole/classpath/
cp /distrib/guacamole-auth-mysql-0.9.5/lib/* /var/lib/guacamole/classpath/
systemctl restart mariadb.service
&lt;/code&gt;&lt;/pre&gt;&lt;h3 id="configuration-de-la-base-de-données"&gt;Configuration de la base de données
&lt;/h3&gt;&lt;pre tabindex="0"&gt;&lt;code&gt;mysqladmin -u root password MySQLRootPass
mysql -u root -p # Enter above password
create database guacdb;
create user &amp;#39;guacuser&amp;#39;@&amp;#39;localhost&amp;#39; identified by &amp;#39;guacDBpass&amp;#39;;
grant select,insert,update,delete on guacdb.* to &amp;#39;guacuser&amp;#39;@&amp;#39;localhost&amp;#39;;
flush privileges;
quit
&lt;/code&gt;&lt;/pre&gt;&lt;h3 id="création-du-schéma-pour-guacd"&gt;Création du schéma pour Guacd
&lt;/h3&gt;&lt;pre tabindex="0"&gt;&lt;code&gt;cd /distrib/sqlauth/guacamole-auth-mysql-0.9.5/schema/
cat ./*.sql | mysql -u root -p guacdb # Enter SQL root password set above
&lt;/code&gt;&lt;/pre&gt;&lt;h2 id="configuration-création-du-fichier-properties"&gt;Configuration, création du fichier « .properties »
&lt;/h2&gt;&lt;pre tabindex="0"&gt;&lt;code&gt;mkdir -p /etc/guacamole/ &amp;amp;&amp;amp; vi /etc/guacamole/guacamole.properties
# Hostname and port of gucamole proxy
guacd-hostname: localhost
guacd-port: 4822
# Location to read extra .jar&amp;#39;s from
lib-directory: /var/lib/guacamole/classpath/
# Authentication provider class
auth-provider: net.sourceforge.guacamole.net.auth.mysql.MySQLAuthenticationProvider
# MySQL properties
mysql-hostname: localhost
mysql-port: 3306
mysql-database: guacdb
mysql-username: guacuser
mysql-password: guacDBpass
# Additional settings
mysql-disallow-duplicate-connections: false
&lt;/code&gt;&lt;/pre&gt;&lt;h2 id="post-installation"&gt;Post-installation
&lt;/h2&gt;&lt;p&gt;Ne pas oublier de nettoyer les répertoires contenant les sources (dans /distrib chez moi), ajouter un lien symbolique vers le fichier de configuration et ajouter le démarrage automatique des services&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;mkdir -p /usr/share/tomcat/.guacamole
ln -s /etc/guacamole/guacamole.properties /usr/share/tomcat/.guacamole/
systemctl enable tomcat.service &amp;amp;&amp;amp; systemctl enable mariadb.service &amp;amp;&amp;amp; chkconfig guacd on
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Le serveur devrait être accessible à l’adresse http://@IP_serveur:8080/gucamole**/**. A partir de là, vous pouvez configurer vos serveurs SSH/RDP/VNC, créer des utilisateurs et vous connecter.&lt;/p&gt;
&lt;p&gt;&lt;img src="https://blog.zwindler.fr/2015/05/x_guacamole.avif"
loading="lazy"
&gt;&lt;/p&gt;
&lt;p&gt;Deux derniers points :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;les logs ne sont pas toujours très locaces. Chez moi, il se trouvent dans /var/log/messages et /var/log/tomcat/&lt;/li&gt;
&lt;li&gt;il manque selon moi un menu pour gérer les connexions actives. Typiquement, dans le cas de VNC, le soft m’indique que j’ai 4 ou 5 sessions ouvertes. Elles n’ont pas l’air concurrentes (je n’en ai qu’une réellement active), mais me parait potentiellement même problématique&lt;/li&gt;
&lt;/ul&gt;</description></item></channel></rss>