Skip to main content

Connexion à Nextcloud

Connexion à Nextcloud via Castopod

1. Objectifs :

Permettre à l’utilisateur de se lié à Castopod son compte Nextcloud, offrant ainsi une expérience de connexion simplifiée et sécurisée.

2. Explication :

Pour réaliser cette fonctionnalité, nous avons mis en place un système d'authentification basé sur le protocole OAuth, qui implique un échange sécurisé de clés entre le client (Castopod) et le serveur (Nextcloud).

Docu.png

Lorsque l'utilisateur choisit de se connecter via Nextcloud, un contrôleur spécifique est déclenché pour initier le processus. Ce contrôleur effectue une requête GET afin d'afficher la page de connexion de Nextcloud, en incluant des paramètres tels que l'identifiant du client (idClient) et de serveur (idServeur), préalablement configurés dans les paramètres d'administration de Nextcloud.

Une fois que l'utilisateur autorise l'accès sur la page de connexion de Nextcloud, Nextcloud renvoie à Castopod un access_token. Ce token est utilisé par Castopod pour obtenir une clé API ainsi qu'un refresh_token. Ce dernier peut être utilisé ultérieurement pour obtenir une nouvelle clé API lorsque celle en cours expirera.

Pour implémenter cette fonctionnalité, plusieurs éléments ont été ajoutés au projet :

  • Contrôleur d'authentification (AuthController) : Ce contrôleur est responsable de l'interaction avec le protocole OAuth. Il gère les requêtes et les réponses nécessaires à l'authentification via Nextcloud.

  • Entité OAuth : Cette entité contient les informations requises pour le protocole OAuth, telles que les clés d'identification du client et du serveur, ainsi que des fonctions pour l'utilisation du protocole.

  • Modèle OAuth (OAuthModel) : Ce modèle permet d'interagir avec la table de la base de données pour stocker et récupérer les informations relatives à l'authentification OAuth.

  • Utilisation de fonctions externes : Pour garantir l'implémentation, notre projet s'appuie sur des fonctions fournies par un projet Git de Bahuma20. Ces fonctions offrent des interfaces PHP CodeIgniter pour la gestion du protocole OAuth.