NextCloud – Authentication Active Directory & SSO via ADFS (SAML)

Introduction

Nextcloud est un fork de la solution open-source Owncloud, il permet de créer son propre cloud auto-hebergé style Dropbox.

Le net ne regorgeant pas vraiment de documentations sur la configuration SSO de NextCloud avec l’ADFS, ce post va j’espère vous permettre de ne pas vous arracher les cheveux sur ce casse tête.

A savoir que je vous explique une configuration de base, c’est à dire que les requêtes SAML ne sont pas signées (La sécu’ ne m’ayant pas forcé à le faire :D), un futur post en parlera peut-être.

Pré-requis

  • Nextcloud de base fonctionnel
  • Un serveur ADFS 3.0/4.0
  • Un Active Directory
  • Les règles firewall qui vont bien #BlameTheFirewall

Configuration de l’Authentification AD

  • Installer/activer l’apps LDAP user and group backend

  • Configurer LDAP / AD integration
    • <ActiveDirectoryFQDN> : Le FQDN de l’AD ou la VIP qui Loadbalance
    • <distinguishedName> : DN de l’utilisateur de service NextCloud (ex. CN=CS-NextCloud,OU=NXC,DC=domain,DC=local)
    • <BaseDN> : BaseDN de l’AD (ex. DC=domain,DC=local)

  • Ajouter le groupe des utilisateurs autorisés à se connecter à NextCloud

  • Configurer l’attribut à utiliser, ici le sAMAccountName

  • Ajouter le groupe des utilisateurs autorisés à se connecter à NextCloud

  • Configurer l’utilisation du sAMAccountName plutôt que l’objectGUID

A partir de la vous devriez pouvoir vous connecter avec le sAMAccountName et voir les utilisateurs de l’AD autorisés dans Users.

Configuration du SSO via ADFS

Configuration de NextCloud

  • Installer/activer l’apps SSO & SAML authentication
  • Il est possible de l’installer en manuel via SFTP dans le folder apps, ne pas oublier dans ce cas de mettre les bon droits
chmod -R 750 /var/www/nextcloud/apps/*
chown -R www-data /var/www/nextcloud/apps/*
  • Dans le cas ou le Enable est grisé, c’est sûrement qu’il manque une dépendance (Remplacer www-data par nginx pour Nginx)

cd /var/www/nextcloud/
sudo -u www-data php occ app:enable user_saml
  • Dans mon cas il manque la librairie mcrypt

[Exception]
App « SSO & SAML authentication » cannot be installed because the following d
ependencies are not fulfilled: The library mcrypt is not available.

  • Il suffit donc de l’installer puis d’activer l’apps
apt install libmcrypt-dev
sudo pecl install mcrypt-1.0.2
echo 'extension=mcrypt.so' >> /etc/php/7.2/cli/php.ini
echo 'extension=mcrypt.so' >> /etc/php/7.2/fpm/php.ini
service apache2 restart
sudo -u www-data php occ app:enable user_saml
  • L’apps SSO & SAML authentication installée, se rendre dans les Settings pour la configurer

  • Voici une configuration de base :
    • General : sAMAccountName
    • Configure your ldP setting here
      • http://<ADFSUrl>/adfs/services/trust
      • https://<ADFSUrl>/adfs/ls
    • Certificate : Voir plus bas

  • Concernant le certificat, il faut exporter le Token-signing Primary puis le convertir en PEM

  • Via OpenSSL utiliser cette commande à exécuter dans le folder \OpenSSL\bin

openssl x509 -inform der -in ADFS-SigningCert.cer -out ADFS-SigningCert.pem

  • Il suffit ensuite d’ouvrir ADFS-SigningCert.pem avec Notepad++ puis de coller le tout dans le rectangle de l’apps
  • Il sera à ce moment possible de télécharger le fichier XML via Download metadata XML

Configuration de l’ADFS

  • Ajouter un Relying Party Trust via le wizard

  • Choisir de type Claims aware

  • Importer le fichier XML précédemment créer via NextCloud

  • Donner un nom au RPT (ex. NextCloud)

  • Ajouter le groupe des utilisateurs autorisés à se connecter à NextCloud (Utilisé dans l’apps LDAP)

  • Une fois le wizard terminé, cliquer sur Edit Claim Issuance Policy…

  • Ajouter une Rule sAMAccountName

Tadaaam, si tout s’est bien passé vous devriez réussir avec vous connecter en Single Sign-On à Nextcloud.

Ah j’allais oublier, en cas de soucis s’il n’est plus possible de se connecter à cause de l’app, deux solution :

chmod 000 /var/www/nextcloud/apps/<apps_folder>
cd /var/www/nextcloud
sudo -u www-data php occ app:disable <apps_name>

Comme expliqué au début on peut encore améliorer la sécurité avec la signature des requêtes SAML, mais vu le temps passé sur cette configuration de base… on verra ça plus tard !


Mathieu

Je suis actuellement ingénieur spécialisé dans le design d'environnements cloud virtualisés. Adepte des technologies de VMware, Nutanix, Citrix et Microsoft je propose à travers ce blog diverses astuces de troubleshooting.

S’abonner
Notification pour
guest

1 Commentaire
Le plus ancien
Le plus récent Le plus populaire
Commentaires en ligne
Afficher tous les commentaires