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 !
[…] https://www.virtualease.fr/nextcloud-authentication-active-directory-sso-via-adfs-saml/ […]