Zum Inhalt

Externe Apps und Dienste authentifizieren

Um anderen Anwendungen und Diensten eingeschränkten Zugriff zu gewähren, können Administratoren mit den Unterbefehlen photoprism auth und photoprism clients Authentifizierungs-Token für sie erzeugen. App-Passwörter sind an Benutzerkonten gebunden und können von allen Benutzern in der Benutzeroberfläche erstellt werden, während sich OAuth2 Access-Token und Client-Zugangsdaten für den Zugriff auf die REST API verwenden lassen, ohne an ein Benutzerkonto gebunden zu sein.

App-Passwörter

Alle Benutzer können sich in der Weboberfläche eigene App-spezifische Passwörter erstellen, indem sie zu Einstellungen > Konto gehen und dort auf die Schaltfläche Apps und Geräte klicken.

Alternativ erzeugt der folgende Befehl in einem Terminal ein neues App-spezifisches Passwort, zum Beispiel für das Konto admin, damit WebDAV-kompatible Clients Dateien synchronisieren können, auch wenn 2FA für das Konto aktiviert ist oder das Kontopasswort geändert wird:

docker compose exec photoprism photoprism auth add -n Sync -s "webdav" admin

Anschließend wird dir das erzeugte App-Passwort angezeigt, damit du es kopieren und sicher aufbewahren oder direkt in einer App eintragen kannst, denn du kannst es später nicht noch einmal einsehen:

|-----------------------------|---------------------|
| App Password                | Authorization Scope |
|-----------------------------|---------------------|
| HY8fxO-8hvNqB-43UV4q-1AZ0vu | webdav              |
|-----------------------------|---------------------|

Aus Sicherheitsgründen empfehlen wir, für die App-Passwörter und Access-Token, die du erzeugst, ein Ablaufdatum zu setzen. Übliche Berechtigungen für App-Passwörter sind "*" für vollen Zugriff oder "webdav" für WebDAV-kompatible Apps zur Dateisynchronisierung.

App-Passwörter können nicht nur über den Endpunkt POST /api/v1/session Sessions erstellen: Entwickler können sie auch direkt als Access-Token im Bearer Authorization Header verwenden, ohne zuvor ein Session-Token zu erzeugen.

App-Passwörter authentifizieren sich als das Benutzerkonto, zu dem sie gehören, und unterliegen deshalb denselben Einschränkungen wie dieses Konto. Wenn die Anmeldung für ein Konto deaktiviert ist, können seine App-Passwörter nur für die WebDAV-Synchronisierung verwendet werden, sofern WebDAV für das Konto aktiviert ist und das App-Passwort die Berechtigung webdav hat. Damit eine Anwendung ohne Benutzeranmeldung aus der REST API lesen kann, erzeuge stattdessen ein Access-Token oder Client-Zugangsdaten.

Optionen

Die folgenden Flags können mit dem Befehl photoprism auth add verwendet werden (wenn du name oder scope weglässt, wirst du interaktiv danach gefragt):

Command Flag Description
--name CLIENT, -n CLIENT CLIENT name to help identify the application
--scope SCOPES, -s SCOPES authorization SCOPES e.g. "metrics" or "photos albums" ("*" to allow all)
--expires LIFETIME, -e LIFETIME authentication LIFETIME in seconds, after which access expires (-1 to disable the limit) (default: 31536000)

Berechtigungen

Führe den folgenden Befehl aus, um die von deiner aktuellen Version unterstützten Berechtigungen anzuzeigen:

docker compose exec photoprism photoprism show scopes

Anschließend kannst du einen oder mehrere dieser Namen an photoprism auth add oder photoprism clients add übergeben, je nachdem, ob du ein App-Passwort, ein Access-Token oder OAuth2-Client-Zugangsdaten benötigst.

Clients, die sich mit App-Passwörtern authentifizieren, können weder das Kontopasswort ändern noch Benutzerkonten verwalten, selbst wenn du alle Berechtigungen angibst oder mit "*" alle erlaubst.

Access-Token

Wenn du dem Befehl photoprism auth add keinen Benutzernamen als Argument übergibst, wird ein Client Access Token erzeugt (mit denselben Flags und Berechtigungen wie oben kannst du Autorisierung und Lebensdauer einschränken):

|--------------------------------------------------|---------------------|
| Access Token                                     | Authorization Scope |
|--------------------------------------------------|---------------------|
| 7dbfa37b5a3db2a9e9dd186479018bfe2e3ce5a71fc2f955 | files folders       |
|--------------------------------------------------|---------------------|

Access-Token sind eine gute Wahl für Entwickler und andere fortgeschrittene Benutzer, um Skripte und externe Dienste mit der PhotoPrism API zu verbinden, zum Beispiel Dienste, die Metriken sammeln, regelmäßig die Indexierung starten oder Bilder auf einem digitalen Bilderrahmen anzeigen.

Beachte jedoch, dass Client Access Token nicht zum Synchronisieren von Dateien über WebDAV verwendet werden können, selbst wenn die Berechtigung "webdav" oder "*" gesetzt ist, da dafür ein registriertes Benutzerkonto erforderlich ist. Access-Token können außerdem nicht als direkter Passwortersatz für Apps dienen, da Clients den Endpunkt POST /api/v1/session nicht verwenden dürfen, der für die Anmeldung über die Benutzeroberfläche erforderlich ist.

Client-Zugangsdaten

Wenn Clients die Authentifizierung über OAuth2 Client Credentials unterstützen, kannst du mit den folgenden Terminal-Befehlen eine client_id und ein client_secret für sie erzeugen, registrierte Clients auflisten und nicht mehr benötigte Zugangsdaten löschen:

CLI Command Description
photoprism clients ls [search] Lists registered client applications
photoprism clients add [username] Registers a new client application
photoprism clients show [identifier] Shows client configuration details
photoprism clients mod [identifier] Updates client application settings
photoprism clients rm [identifier] Deletes the specified client application
photoprism clients reset --yes Removes all registered client applications

Der folgende Befehl in einem Terminal erzeugt zum Beispiel Zugangsdaten für Prometheus, deren Zugriff auf den Endpunkt metrics beschränkt ist:

docker compose exec photoprism photoprism clients add -n Prometheus -s metrics

Anschließend werden dir die erzeugte client_id und das client_secret angezeigt, damit du sie kopieren und sicher aufbewahren kannst:

|------------------|----------------------------------|
| Client ID        | Client Secret                    |
|------------------|----------------------------------|
| csce0w2joodmirvi | 5VKkBeZLDvojjpE9XzCMXShnrxmxHWvN |
|------------------|----------------------------------|

OAuth2-Client-Zugangsdaten können nicht direkt zum Synchronisieren von Dateien über WebDAV, als Passwortersatz für Apps oder für die Anmeldung an der Weboberfläche verwendet werden.

Optionen

Die folgenden Parameter können mit dem Befehl photoprism clients add verwendet werden, zum Beispiel um die Anzahl der Access-Token zu begrenzen, die der Client anfordern kann:

Command Flag Description
--name CLIENT, -n CLIENT CLIENT name to help identify the application
--role ROLE, -r ROLE client authorization ROLE (default: "client")
--scope SCOPES, -s SCOPES client authorization SCOPES e.g. "metrics" or "photos albums" ("*" to allow all)
--expires LIFETIME, -e LIFETIME access token LIFETIME in seconds, after which a new token must be requested (default: 86400)
--tokens NUMBER, -t NUMBER maximum NUMBER of access tokens that the client can request (-1 to disable the limit) (default: 10)

Wenn du den Parameter name oder scope weglässt, wirst du interaktiv danach gefragt. Um die derzeit unterstützten Berechtigungen anzuzeigen, führe Folgendes aus:

docker compose exec photoprism photoprism show scopes

Beim Anfordern von Access-Token können Clients deren Berechtigungen weiter einschränken, indem sie den Parameter scope an den Endpunkt POST /api/v1/oauth/token übergeben.