Übersicht
Der Microsoft 365-Konnektor bietet die Funktionalität, Daten von Microsoft 365-Diensten (OneDrive, OneNote, Teams, SharePoint) abzurufen und im Fess-Index zu registrieren.
Für diese Funktion ist das Plugin fess-ds-microsoft365 erforderlich.
Unterstützte Dienste
OneDrive: Benutzer-Drives, Gruppen-Drives, freigegebene Dokumente
OneNote: Notizbücher (Site, Benutzer, Gruppe)
Teams: Kanäle, Nachrichten, Chats
SharePoint Document Libraries: Dokumentbibliothek-Metadaten
SharePoint Lists: Listen und Listenelemente
SharePoint Pages: Site-Seiten, Nachrichtenartikel
Voraussetzungen
Die Installation des Plugins ist erforderlich
Eine Azure AD-Anwendungsregistrierung ist erforderlich
Microsoft Graph API-Berechtigungen und Administratoreinwilligung sind erforderlich
Java 21 oder höher, Fess 15.2.0 oder höher
Plugin-Installation
Methode 1: JAR-Datei direkt platzieren
# Von Maven Central herunterladen
wget https://repo1.maven.org/maven2/org/codelibs/fess/fess-ds-microsoft365/X.X.X/fess-ds-microsoft365-X.X.X.jar
# Platzieren
cp fess-ds-microsoft365-X.X.X.jar $FESS_HOME/app/WEB-INF/lib/
# oder
sudo cp fess-ds-microsoft365-X.X.X.jar /usr/share/fess/app/WEB-INF/lib/
Methode 2: Aus Quellcode erstellen
git clone https://github.com/codelibs/fess-ds-microsoft365.git
cd fess-ds-microsoft365
mvn clean package
cp target/fess-ds-microsoft365-*.jar $FESS_HOME/app/WEB-INF/lib/
Starten Sie Fess nach der Installation neu.
Konfiguration
Konfigurieren Sie über die Administrationsoberfläche unter „Crawler“ -> „Datenspeicher“ -> „Neu erstellen“.
Grundeinstellungen
| Einstellung | Beispielwert |
|---|---|
| Name | Microsoft 365 OneDrive |
| Handler-Name | OneDriveDataStore / OneNoteDataStore / TeamsDataStore / SharePointDocLibDataStore / SharePointListDataStore / SharePointPageDataStore |
| Aktiviert | Ein |
Parameter-Einstellungen (gemeinsam)
tenant=12345678-1234-1234-1234-123456789abc
client_id=87654321-4321-4321-4321-123456789abc
client_secret=abcdefghijklmnopqrstuvwxyz123456
number_of_threads=1
ignore_error=false
Gemeinsame Parameterliste
| Parameter | Erforderlich | Beschreibung |
|---|---|---|
tenant | Ja | Azure AD Mandanten-ID |
client_id | Ja | Client-ID der App-Registrierung |
client_secret | Ja | Client-Secret der App-Registrierung |
number_of_threads | Nein | Anzahl paralleler Verarbeitungs-Threads (Standard: 1) |
ignore_error | Nein | Bei Fehler Verarbeitung fortsetzen (Standard: false) |
include_pattern | Nein | Regex-Muster für einzuschließende Inhalte |
exclude_pattern | Nein | Regex-Muster für auszuschließende Inhalte |
default_permissions | Nein | Standard-Rollenzuweisung |
Azure AD-Anwendungsregistrierung
1. Anwendung im Azure Portal registrieren
Öffnen Sie Azure Active Directory unter https://portal.azure.com:
Klicken Sie auf „App-Registrierungen“ -> „Neue Registrierung“
Geben Sie den Anwendungsnamen ein
Wählen Sie den unterstützten Kontotyp
Klicken Sie auf „Registrieren“
2. Client-Secret erstellen
Unter „Zertifikate und Geheimnisse“:
Klicken Sie auf „Neuer geheimer Clientschlüssel“
Legen Sie Beschreibung und Ablaufdatum fest
Kopieren Sie den Geheimniswert (kann später nicht mehr eingesehen werden)
3. API-Berechtigungen hinzufügen
Unter „API-Berechtigungen“:
Klicken Sie auf „Berechtigung hinzufügen“
Wählen Sie „Microsoft Graph“
Wählen Sie „Anwendungsberechtigungen“
Fügen Sie die erforderlichen Berechtigungen hinzu (siehe unten)
Klicken Sie auf „Administratoreinwilligung erteilen“
Erforderliche Berechtigungen nach Datenspeicher
OneDriveDataStore
Erforderliche Berechtigungen:
Files.Read.All
Bedingte Berechtigungen:
User.Read.All- bei user_drive_crawler=trueGroup.Read.All- bei group_drive_crawler=trueSites.Read.All- bei shared_documents_drive_crawler=true
OneNoteDataStore
Erforderliche Berechtigungen:
Notes.Read.All
Bedingte Berechtigungen:
User.Read.All- bei user_note_crawler=trueGroup.Read.All- bei group_note_crawler=trueSites.Read.All- bei site_note_crawler=true
TeamsDataStore
Erforderliche Berechtigungen:
Team.ReadBasic.AllGroup.Read.AllChannel.ReadBasic.AllChannelMessage.Read.AllChannelMember.Read.AllUser.Read.All
Bedingte Berechtigungen:
Chat.Read.All- bei Angabe von chat_idFiles.Read.All- bei append_attachment=true
Skript-Einstellungen
OneDrive
title=file.name
content=file.description + "\n" + file.contents
mimetype=file.mimetype
created=file.created
last_modified=file.last_modified
url=file.web_url
role=file.roles
Verfügbare Felder:
file.name- Dateinamefile.description- Dateibeschreibungfile.contents- Textinhaltfile.mimetype- MIME-Typfile.filetype- Dateitypfile.created- Erstellungsdatumfile.last_modified- Letztes Änderungsdatumfile.size- Dateigrößefile.web_url- URL zum Öffnen im Browserfile.roles- Zugriffsberechtigungen
OneNote
title=notebook.name
content=notebook.contents
created=notebook.created
last_modified=notebook.last_modified
url=notebook.web_url
role=notebook.roles
size=notebook.size
Verfügbare Felder:
notebook.name- Notizbuchnamenotebook.contents- Integrierter Inhalt von Abschnitten und Seitennotebook.size- Inhaltsgröße (Zeichenanzahl)notebook.created- Erstellungsdatumnotebook.last_modified- Letztes Änderungsdatumnotebook.web_url- URL zum Öffnen im Browsernotebook.roles- Zugriffsberechtigungen
Teams
title=message.title
content=message.content
created=message.created_date_time
last_modified=message.last_modified_date_time
url=message.web_url
role=message.roles
Verfügbare Felder:
message.title- Nachrichtentitelmessage.content- Nachrichteninhaltmessage.created_date_time- Erstellungsdatummessage.last_modified_date_time- Letztes Änderungsdatummessage.web_url- URL zum Öffnen im Browsermessage.roles- Zugriffsberechtigungenmessage.from- Absenderinformationen
Zusätzliche Parameter nach Datenspeicher
OneDrive
max_content_length=-1
ignore_folder=true
supported_mimetypes=.*
drive_id=
shared_documents_drive_crawler=true
user_drive_crawler=true
group_drive_crawler=true
OneNote
site_note_crawler=true
user_note_crawler=true
group_note_crawler=true
Teams
team_id=
exclude_team_ids=
include_visibility=
channel_id=
chat_id=
ignore_replies=false
append_attachment=true
ignore_system_events=true
title_dateformat=yyyy/MM/dd'T'HH:mm:ss
title_timezone_offset=Z
SharePoint Document Libraries
site_id=
exclude_site_id=
ignore_system_libraries=true
SharePoint Lists
site_id=hostname,siteCollectionId,siteId
list_id=
exclude_list_id=
list_template_filter=
ignore_system_lists=true
SharePoint Pages
site_id=
exclude_site_id=
ignore_system_pages=true
page_type_filter=
Anwendungsbeispiele
Alle OneDrive-Laufwerke crawlen
Parameter:
tenant=12345678-1234-1234-1234-123456789abc
client_id=87654321-4321-4321-4321-123456789abc
client_secret=your_client_secret
user_drive_crawler=true
group_drive_crawler=true
shared_documents_drive_crawler=true
Skript:
title=file.name
content=file.description + "\n" + file.contents
mimetype=file.mimetype
created=file.created
last_modified=file.last_modified
url=file.web_url
role=file.roles
Teams-Nachrichten eines bestimmten Teams crawlen
Parameter:
tenant=12345678-1234-1234-1234-123456789abc
client_id=87654321-4321-4321-4321-123456789abc
client_secret=your_client_secret
team_id=19:abc123def456@thread.tacv2
ignore_replies=false
append_attachment=true
title_timezone_offset=+01:00
Skript:
title=message.title
content=message.content
created=message.created_date_time
url=message.web_url
role=message.roles
Fehlerbehebung
Authentifizierungsfehler
Symptom: Authentication failed oder Insufficient privileges
Zu überprüfen:
Überprüfen Sie, ob Mandanten-ID, Client-ID und Client-Secret korrekt sind
Überprüfen Sie, ob die erforderlichen API-Berechtigungen im Azure Portal erteilt wurden
Überprüfen Sie, ob die Administratoreinwilligung erteilt wurde
Überprüfen Sie das Ablaufdatum des Client-Secrets
API-Ratenbegrenzungsfehler
Symptom: 429 Too Many Requests
Lösung:
Reduzieren Sie
number_of_threads(auf 1 oder 2 setzen)Verlängern Sie das Crawl-Intervall
Setzen Sie
ignore_error=truezur Fortsetzung der Verarbeitung
Keine Daten abrufbar
Symptom: Crawling erfolgreich, aber 0 Dokumente
Zu überprüfen:
Überprüfen Sie, ob die Zieldaten existieren
Überprüfen Sie, ob die API-Berechtigungen korrekt konfiguriert sind
Überprüfen Sie die Einstellungen der Benutzer-/Gruppen-Drive-Crawler
Überprüfen Sie die Logs auf Fehlermeldungen
Crawling großer Datenmengen
Lösung:
In mehrere Datenspeicher aufteilen (nach Site, Drive usw.)
Last über Zeitplaneinstellungen verteilen
number_of_threadsfür parallele Verarbeitung anpassenNur bestimmte Ordner/Sites crawlen
Weiterführende Informationen
Übersicht der Datenspeicher-Konnektoren - Übersicht der Datenspeicher-Konnektoren
Google Workspace-Konnektor - Google Workspace-Konnektor
Datenspeicher-Crawl - Leitfaden zur Datenspeicher-Konfiguration