Skip to content

Intégration SharePoint / OneDrive ​

onedrive synchronise vers la base de connaissances les dossiers et fichiers cochés d’une bibliothèque de documents SharePoint, avec planification, incrémental, reprise et rapprochement des suppressions. Les fichiers des équipes et canaux Microsoft Teams sont rangés dans SharePoint : ils apparaissent comme des bibliothèques comme les autres. Flux général : Synchronisation des sources de données.

Les OneDrive personnels ne sont pas proposés dans cette version : seules les bibliothèques partagées le sont.

Déclarer l’application dans Microsoft Entra (une fois, par l’admin du client) ​

Le connecteur se connecte comme une application, sans compte utilisateur ni fenêtre de connexion. Il ne lit rien d’autre que les sites SharePoint.

  1. Microsoft Entra → Applications → Inscriptions d’applications → Nouvelle inscription. Nom au choix (ex. « GsKnora »), comptes de cet annuaire uniquement, aucune URL de redirection.
  2. Sur la page Vue d’ensemble, noter l’ID d’application (client) et l’ID de l’annuaire (locataire).
  3. Certificats et secrets → Nouveau secret client. Copier la valeur tout de suite (elle n’est plus affichée ensuite) et noter sa date d’expiration.
  4. Autorisations de l’API → Ajouter une autorisation → Microsoft Graph → Autorisations d’application → Sites.Read.All, puis Accorder le consentement administrateur.

Sites.Read.All est en lecture seule : GsKnora ne peut ni modifier ni supprimer un fichier SharePoint.

Configuration dans la base de connaissances ​

  1. Paramètres de la base → Sources de données → Nouveau, « SharePoint / OneDrive ».
  2. Saisir l’ID de l’annuaire (ou le domaine principal, ex. contoso.onmicrosoft.com), l’ID de l’application et le secret, puis tester la connexion. Le test obtient un jeton et liste un site : il échoue si le secret est faux ou si le consentement administrateur manque.
  3. Cocher une bibliothèque, un dossier ou un fichier. Le premier niveau liste toutes les bibliothèques de documents sous la forme « Site - Bibliothèque » ; les dossiers s’ouvrent au fur et à mesure. Une source = une bibliothèque ; pour en synchroniser une autre, créer une seconde source.
  4. Choisir le mode, la planification, la stratégie de conflit et la synchronisation des suppressions, enregistrer, puis lancer une synchronisation manuelle pour vérifier.

Cocher un dossier synchronise tout son contenu, y compris les nouveaux fichiers et sous-dossiers ; cocher un fichier synchronise ce fichier seul. Seules les extensions importables par GsKnora sont proposées (PDF, Word, Excel, PowerPoint, texte, images…) ; les blocs-notes OneNote sont ignorés.

Ce que fait une synchronisation ​

  • Chaque fichier est identifié par son chemin dans la bibliothèque. Un fichier dont le contenu n’a pas changé (même identifiant, même étiquette de contenu, même taille) n’est pas retéléchargé.
  • Un fichier modifié est réimporté ; un fichier supprimé, renommé ou déplacé hors de la sélection est retiré de la base si « Synchroniser les suppressions » est actif (un renommage revient à une suppression suivie d’un ajout).
  • Les fichiers sont rangés dans la base sous Site - Bibliothèque/<chemin>. Ce nom est figé à la première synchronisation.
  • Une synchronisation interrompue reprend au dernier point enregistré.
  • Un fichier en erreur (trop gros, vide, droit refusé) apparaît dans l’historique avec sa raison ; les autres continuent.

Réseau et sécurité ​

RequêteCibleJeton
Jeton d’applicationlogin.microsoftonline.comSecret client
API (sites, bibliothèques, dossiers)graph.microsoft.comOui, Authorization: Bearer
Téléchargement d’un fichierLien pré-signé renvoyé par Microsoft Graph (domaine *.sharepoint.com)Non

Les adresses Microsoft sont fixes : elles ne viennent jamais de la saisie de l’utilisateur. Un lien de pagination qui pointerait ailleurs que graph.microsoft.com est refusé, pour que le jeton ne parte jamais vers un autre domaine. Les téléchargements passent par le client protégé contre le SSRF. Le secret est chiffré en base comme les autres identifiants de source.

Dépannage ​

SymptômeCause probable
Test de connexion : identifiants invalidesSecret faux ou expiré, ID d’application ou d’annuaire erroné
Test de connexion : accès refuséPermission Sites.Read.All absente ou consentement administrateur non accordé
Aucune bibliothèque listéeMême cause, ou aucun site dans l’annuaire
Fichier « trop volumineux »Dépasse MAX_FILE_SIZE_MB

Pensez à renouveler le secret avant sa date d’expiration, puis à le remplacer dans la source (bouton de remplacement des identifiants).

Référence d’implémentation ​

Paquet internal/datasource/connector/sharepoint : client.go (jeton d’application, appels Graph avec reprises sur 429/5xx et Retry-After, nouveau jeton sur 401), connector.go (test, arborescence), sync.go (parcours dossier par dossier, téléchargement, rapprochement des suppressions), cursor.go (empreintes par chemin). Identifiants de ressource : <id de la bibliothèque>:<chemin absolu>.