API Übersicht
Passwork API bietet eine programmgesteuerte Schnittstelle für die Interaktion mit dem Passwortverwaltungsdienst Passwork. Der API ermöglicht die Automatisierung von Vorgängen mit Passwörtern, Tresoren, Benutzern und anderen Systemobjekten und bietet so die vollständige programmgesteuerte Kontrolle über alle Aspekte der Arbeit mit Passwork.
Unser API bietet folgende Funktionen:
- Passwortverwaltung: Passwörter erstellen, abrufen, aktualisieren, löschen;
- Tresorverwaltung: Erstellen neuer Tresore, Verwalten des Zugriffs;
- Ordnerverwaltung: Erstellen von Ordnerstrukturen in Tresoren;
- Benutzerverwaltung: Benutzer anlegen, Zugriffsrechte festlegen;
- Benutzergruppenverwaltung: Benutzer gruppieren, um die Zugriffsverwaltung zu vereinfachen;
- Gemeinsamer Zugriff auf Passwörter: Gewähren des Zugriffs auf Passwörter für andere Benutzer über den Posteingangsmechanismus;
- Öffentliche Links erstellen: temporärer Zugriff auf Passwörter über Links;
- Unterstützung für Anhänge: Arbeiten mit Dateien, die an Passwörter angehängt sind;
- Suchen und Filtern: Suche nach Passwörtern nach verschiedenen Kriterien;
- Shortcutsverwaltung: Erstellen von Links zu Passwörtern in anderen Tresoren;
- Papierkorbverwaltung: Wiederherstellen gelöschter Objekte;
- Aktivitätsprotokollierung: Informationen über Benutzeraktionen abrufen.
Bei der Installation von Passwork enthält das .zip-Archiv auch Api reference.pdf mit detaillierten Beschreibungen aller verfügbaren API-Endpunkte:
- Docker
- Windows Server
- Linux
/<passwork>/www/latest/files/api-schema/Api reference.pdf
C:\inetpub\wwwroot\passwork\files\api-schema\Api reference.pdf
/var/www/files/api-schema/Api reference.pdf
Clientseitige Verschlüsselung
Eines der Hauptmerkmale von Passwork API ist die Unterstützung der clientseitigen Verschlüsselung. Bei Verwendung der clientseitigen Verschlüsselung werden alle kritisch wichtigen Daten (Passwörter, vertrauliche Felder, Anhänge) auf der Clientseite verschlüsselt, bevor sie an den Server gesendet werden.
Prinzip der Kryptographie
- Master-Passwort: Die Verschlüsselung verwendet ein Master-Passwort, das nur dem Benutzer bekannt ist. Das Master-Passwort wird niemals an den Server gesendet;
- Master-Schlüssel: Basierend auf dem Master-Passwort wird mit PBKDF2 (Password-Based Key Derivation Function 2) ein Master-Schlüssel generiert;
- Hauptschlüssel-Hash: Ein Hash des Hauptschlüssels wird mithilfe von SHA-256 berechnet. Dieser Hash wird an den Server gesendet, um den Client zu authentifizieren.
- Tresorschlüssel: Für jeden Tresor wird ein eindeutiger Schlüssel generiert, der zum Verschlüsseln von Passwörtern und anderen Daten in diesem Tresor verwendet wird.
- Asymmetrische Verschlüsselung: Für den Schlüsselaustausch zwischen Benutzern wird asymmetrische Verschlüsselung (RSA) verwendet. Jeder Benutzer verfügt über ein Schlüsselpaar – öffentlich und privat;
- Datenverschlüsselung: Zur Verschlüsselung von Passwörtern und anderen vertraulichen Daten wird die symmetrische AES-Verschlüsselung im CBC-Modus mit PKCS7-Padding verwendet.
API Kundenverantwortung
Wichtig: Gemäß der Zero Knowledge-Architektur geht Passwork API davon aus, dass kryptografische Vorgänge auf der Clientseite ausgeführt werden. Dies bedeutet, dass die Verschlüsselung und Entschlüsselung der Daten in der Clientanwendung erfolgen muss, bevor sie an den Server gesendet werden. Der Passwork-Server arbeitet mit bereits verschlüsselten Daten und wendet zusätzlich eine eigene Verschlüsselungsschicht an, wodurch ein mehrschichtiger Schutz entsteht.
Der API-Client muss Folgendes sicherstellen:
- Generierung und Speicherung des Master-Schlüssels auf Basis des Master-Passworts;
- Verschlüsselung der Daten vor dem Senden an den Server;
- Entschlüsselung der vom Server empfangenen Daten;
- Berechnung des Hauptschlüssel-Hash für die Autorisierung;
- Asymmetrische Verschlüsselung der Schlüssel beim Austausch mit anderen Benutzern.
Python-Connector
Um die Arbeit mit API und die Implementierung aller erforderlichen kryptografischen Operationen zu vereinfachen, stellt Passwork einen offiziellen [Python-Connector] (/api-and-integrations/python-connector) bereit. Der Connector fasst die gesamte Komplexität der Arbeit mit Kryptographie und dem API in einer einfachen Programmschnittstelle zusammen.
Der Python-Connector bietet:
- Sitzungs- und Berechtigungsverwaltung;
- Automatische Sitzungsverlängerung über refreshToken;
- Kryptografische Operationen (Verschlüsselung/Entschlüsselung);
- Vorgefertigte Methoden für die wichtigsten API-Operationen;
- Eine universelle
call()-Methode für beliebige API-Anfragen.
Autorisierung und Sitzungsverwaltung
Genehmigung
Der Autorisierungsprozess läuft wie folgt ab:
- Der Passwork-Benutzer klickt auf der Registerkarte Autorisierung und 2FA im Abschnitt API-Tokens auf Paar generieren;
- Der Server gibt ein Tokenpaar zurück:
accessTokenundrefreshToken; - Der Benutzer verwendet den
accessTokenfür alle nachfolgenden Anforderungen und fügt ihn demAuthorization: Bearer {accessToken}-Header hinzu; - Wenn die clientseitige Verschlüsselung aktiviert ist, erhält der Benutzer auch
Passwork-MasterKeyHashund fügt es dem Header hinzu.
Sitzungsbehandlung und RefreshToken
Passwork API verwendet Zugriffstoken mit begrenzter Gültigkeit:
- Zugriffstoken: Das Haupttoken zum Autorisieren von Anfragen. Hat eine begrenzte Lebensdauer (normalerweise Minuten oder Stunden);
- Aktualisierungstoken: Ein langlebiges Token, mit dem ein neues Zugriffstoken ohne erneute Authentifizierung erhalten werden kann.
- Token-Erneuerung: Wenn das Zugriffstoken abläuft, erhält der Client einen 401-Fehler mit dem Code
accessTokenExpired. Normalerweise ruft der ClientPOST /api/v1/sessions/refreshmitAuthorization: Bearerund einem JSON-Body auf, derrefreshTokenenthält, um ein neues Paar zu erhalten. Für API-Sitzungen (einschließlich Dienstkonten) können zusätzliche Routen nur den Zugriff erneuern oder nur aktualisieren – siehe API-Tokenrotation; - Automatische Erneuerung: Der Python-Connector verarbeitet den Token-Ablauf automatisch und führt die Erneuerung ohne Benutzereingriff durch;
- Sitzungsspeicherung: Der Python-Connector ermöglicht das Speichern und Wiederherstellen von Sitzungen, praktisch für eine langfristige Automatisierung. Gespeicherte Sitzungen werden aus Sicherheitsgründen verschlüsselt.
API Antwortformat
Der X-Response-Format-Anfrageheader gibt das Format der Antwort vom API an:
- base64 – die Antwort vom Server wird in Base64-Kodierung zurückgegeben (Standardwert);
- raw – die Antwort wird im Format JSON zurückgegeben.
Fügen Sie der Anfrage den Header X-Response-Format: raw hinzu, um die Antwort in JSON zu erhalten. Verwenden Sie für eine Base64-Antwort X-Response-Format: base64 oder lassen Sie den Header weg.
Sicherheitsempfehlungen
Bei der Verwendung von Passwork API sind folgende Sicherheitsempfehlungen zu beachten:
- Schützen Sie API-Schlüssel: Speichern Sie API-Schlüssel sicher, verwenden Sie Umgebungsvariablen oder sichere Geheimspeicher;
- Schlüsselrotation: API-Schlüssel regelmäßig aktualisieren, um Risiken zu minimieren;
- HTTPS: Verwenden Sie nur HTTPS für alle API-Kommunikationen;
- Geringeste Berechtigung: Erstellen Sie separate API-Benutzer mit minimalen erforderlichen Zugriffsrechten;
- Master-Passwort schützen: Bewahren Sie das Master-Passwort mit maximalem Schutz auf, da eine Gefährdung des Master-Passworts zur Gefährdung aller Passwörter führt;
- Gespeicherte Sitzungen schützen: Stellen Sie einen zuverlässigen Schutz gespeicherter Sitzungen und Verschlüsselungsschlüssel sicher.
- Fehlerbehandlung: Behandeln Sie API-Fehler sorgfältig und vermeiden Sie die Offenlegung vertraulicher Informationen in Protokollen.
API Endpunkte und Funktionen
Gewölbe
- Tresor erstellen:
POST /api/v1/vaults - Liste der Tresore abrufen:
GET /api/v1/vaults - Tresorinformationen abrufen:
GET /api/v1/vaults/{id} - Tresor aktualisieren:
POST /api/v1/vaults/{id} - Tresor löschen:
DELETE /api/v1/vaults/{id} - Benutzerzugriff verwalten:
POST /api/v1/vaults/{id}/grant-user-accessPOST /api/v1/vaults/{id}/revoke-user-access
- Gruppenzugriff verwalten:
POST /api/v1/vaults/{id}/grant-user-group-accessPOST /api/v1/vaults/{id}/revoke-user-group-access
- Tresore importieren:
POST /api/v1/vaults/import
Ordner
- Ordner erstellen:
POST /api/v1/folders - Liste der Ordner abrufen:
GET /api/v1/folders - Ordnerinformationen abrufen:
GET /api/v1/folders/{id} - Update-Ordner:
POST /api/v1/folders/{id} - Ordner löschen:
DELETE /api/v1/folders/{id} - Ordner kopieren:
POST /api/v1/folders/{id}/copy - Ordner verschieben:
POST /api/v1/folders/{id}/move - Zugriff verwalten:
POST /api/v1/folders/{id}/grant-user-accessPOST /api/v1/folders/{id}/revoke-user-access
- Ordner importieren/exportieren:
POST /api/v1/folders/importPOST /api/v1/directories/export
Elemente/Passwörter
- Passwort erstellen:
POST /api/v1/items - Liste der Passwörter abrufen:
GET /api/v1/items - Passwortinformationen abrufen:
GET /api/v1/items/{id} - Passwort aktualisieren:
PATCH /api/v1/items/{id} - Passwort löschen:
DELETE /api/v1/items/{id} - Passwort kopieren:
POST /api/v1/items/{id}/copy - Passwort verschieben:
POST /api/v1/items/{id}/move - Anhänge abrufen:
GET /api/v1/items/{id}/attachment/{attachmentId} - Massenoperationen:
POST /api/v1/items/copy/bulkPOST /api/v1/items/move/bulkPOST /api/v1/items/delete/bulk
- Passwörter importieren/exportieren:
POST /api/v1/items/importPOST /api/v1/items/export
- Passwörter suchen:
GET /api/v1/items/search - Sicherheitsanalyse:
GET /api/v1/items/security-analysis
Benutzer
- Benutzer erstellen:
POST /api/v1/users - Liste der Benutzer abrufen:
GET /api/v1/users - Benutzerinformationen abrufen:
GET /api/v1/users/{id} - Benutzer aktualisieren:
PATCH /api/v1/users/{id} - Benutzer löschen:
DELETE /api/v1/users/{id} - Benutzer sperren/entsperren:
POST /api/v1/users/{id}/blockPOST /api/v1/users/{id}/unblock
- Zwei-Faktor-Authentifizierung:
POST /api/v1/users/2fa/set-upPOST /api/v1/users/2fa/set-statePOST /api/v1/users/2fa/reset
Benutzergruppen
- Gruppe erstellen:
POST /api/v1/user-groups - Liste der Gruppen abrufen:
GET /api/v1/user-groups - Gruppeninformationen abrufen:
GET /api/v1/user-groups/{id} - Aktualisierungsgruppe:
POST /api/v1/user-groups/{id} - Gruppe löschen:
DELETE /api/v1/user-groups/{id} - Gruppenmitglieder verwalten:
POST /api/v1/user-groups/{id}/add-usersPOST /api/v1/user-groups/{id}/remove-users
- Massengruppenoperationen:
POST /api/v1/user-groups/delete/bulkPOST /api/v1/user-groups/set-state/bulk
Benutzerrollen
- Rolle erstellen:
POST /api/v1/user-roles - Rollenliste abrufen:
GET /api/v1/user-roles - Rolleninformationen abrufen:
GET /api/v1/user-roles/{id} - Rolle aktualisieren:
PATCH /api/v1/user-roles/{id} - Rolle löschen:
DELETE /api/v1/user-roles/{id} - Berechtigungen verwalten:
GET /api/v1/user-roles/permission-items/list
Gemeinsamer Zugriff (Posteingangselemente)
- Passwort an Benutzer senden:
POST /api/v1/inbox-items/send-to-user - Passwort an Benutzergruppe senden:
POST /api/v1/inbox-items/send-to-user-group - Liste der Posteingangskennwörter abrufen:
GET /api/v1/inbox-items - Passwort für den Posteingang suchen:
GET /api/v1/inbox-items/search - Posteingangspasswort erhalten:
GET /api/v1/inbox-items/{id} - Zugriffstyp festlegen:
POST /api/v1/inbox-items/{id}/set-access - Massenlöschung:
POST /api/v1/inbox-items/delete/bulk
Öffentliche Links
- Link erstellen:
POST /api/v1/links - Linkliste abrufen:
GET /api/v1/links/folder/{folderId}GET /api/v1/links/item/{itemId}GET /api/v1/links/vault/{vaultId}
- Link löschen:
DELETE /api/v1/links/{id} - Massenlöschung:
POST /api/v1/links/delete/bulk
Papierkorb (Bin-Artikel)
- Liste der Papierkorbelemente abrufen:
GET /api/v1/bin-items - Papierkorb abrufen:
GET /api/v1/bin-items/{id}/folderGET /api/v1/bin-items/{id}/itemGET /api/v1/bin-items/{id}/shortcut
- Elemente wiederherstellen:
POST /api/v1/bin-items/restore/bulkPOST /api/v1/bin-items/restore-and-move/bulk
- Elemente löschen:
DELETE /api/v1/bin-items/{id}POST /api/v1/bin-items/delete/bulkDELETE /api/v1/bin-items/all
Shortcuten
- Shortcut erstellen:
POST /api/v1/shortcuts - Liste der Shortcuten abrufen:
GET /api/v1/shortcuts - Shortcutsinformationen abrufen:
GET /api/v1/shortcuts/{id} - Shortcut kopieren:
POST /api/v1/shortcuts/{id}/copy - Shortcut verschieben:
POST /api/v1/shortcuts/move/bulk - Shortcut löschen:
DELETE /api/v1/shortcuts/{id} - Massenoperationen:
POST /api/v1/shortcuts/create/bulkPOST /api/v1/shortcuts/copy/bulkPOST /api/v1/shortcuts/move/bulkPOST /api/v1/shortcuts/delete/bulk
Aktivitätsprotokoll
- Protokolle abrufen:
GET /api/v1/activity-logs - Ereignisinformationen abrufen:
GET /api/v1/activity-logs/{id} - Letzte Benutzeraktivitäten abrufen:
GET /api/v1/activity-logs/directories/last-users-activities
- Letzte Aktivität eines Benutzers abrufen:
GET /api/v1/activity-logs/user/latest
Sitzungen
- Aktuelle Sitzungsinformationen abrufen:
GET /api/v1/sessions/current/info - Liste der Sitzungen abrufen:
GET /api/v1/sessions - Sitzung löschen:
DELETE /api/v1/sessions/{id} - Vollständiges Token-Paar erneuern:
POST /api/v1/sessions/refresh - Nur Zugriff erneuern (API Sitzungen):
POST /api/v1/sessions/refresh-access-token - Nur Aktualisierung erneuern (API Sitzungen):
POST /api/v1/sessions/refresh-refresh-token - Alle drei Abläufe,
curl-Beispiele und Einschränkungen: API Token-Rotation
Einstellungen
- Einstellungen abrufen/aktualisieren:
-
Passwörter:
GET/PATCH /api/v1/settings/auth-password-complexity -
Master-Passwörter:
GET/PATCH /api/v1/settings/master-password-complexity -
Schnittstelle:
GET/PATCH /api/v1/settings/interface -
Sitzungen:
GET/PATCH /api/v1/settings/session -
Benachrichtigungen:
GET/PATCH /api/v1/settings/notifications -
Aktivitätsprotokolle:
GET/PATCH /api/v1/settings/activity-log -
Suche:
GET/PATCH /api/v1/settings/search -
Tresore:
GET/PATCH /api/v1/settings/vault -
Benutzer:
GET/PATCH /api/v1/settings/user
-
Benutzereinladungen
- Einladung erstellen:
POST /api/v1/user-invites - Liste der Einladungen abrufen:
GET /api/v1/user-invites - Einladungsinformationen abrufen:
GET /api/v1/user-invites/{id} - Einladung löschen:
DELETE /api/v1/user-invites/{id} - Einladung erstellen und senden:
POST /api/v1/user-invites/create-and-send