Zum Hauptinhalt springen

API-Übersicht

Die Passwork API bietet eine programmatische Schnittstelle zur Interaktion mit dem Passwork-Passwortmanagement-Service. Die API ermöglicht die Automatisierung von Operationen mit Passwörtern, Tresoren, Benutzern und anderen Systemobjekten und bietet vollständige programmatische Kontrolle über alle Aspekte der Arbeit mit Passwork.

Unsere API bietet die folgenden Möglichkeiten:

  • Passwortverwaltung: Erstellen, Abrufen, Aktualisieren, Löschen von Passwörtern;
  • Tresorverwaltung: Erstellen neuer Tresore, Zugriffsverwaltung;
  • Ordnerverwaltung: Erstellen von Ordnerstrukturen innerhalb von Tresoren;
  • Benutzerverwaltung: Erstellen von Benutzern, Festlegen von Zugriffsrechten;
  • Benutzergruppenverwaltung: Gruppierung von Benutzern zur Vereinfachung der Zugriffsverwaltung;
  • Gemeinsamer Zugriff auf Passwörter: Anderen Benutzern über den Posteingang-Mechanismus Zugriff auf Passwörter gewähren;
  • Erstellen öffentlicher Links: Temporärer Zugriff auf Passwörter über Links;
  • Anhangsunterstützung: Arbeiten mit an Passwörter angehängten Dateien;
  • Suche und Filterung: Suche nach Passwörtern anhand verschiedener Kriterien;
  • Shortcut-Verwaltung: Erstellen von Links zu Passwörtern in anderen Tresoren;
  • Papierkorbverwaltung: Wiederherstellen gelöschter Objekte;
  • Aktivitätsprotokollierung: Abrufen von Informationen über Benutzeraktionen.

Bei der Installation von Passwork enthält das .zip-Archiv auch die Datei Api reference.pdf mit detaillierten Beschreibungen aller verfügbaren API-Endpunkte:

/<passwork>/www/latest/files/api-schema/Api reference.pdf

Clientseitige Verschlüsselung

Eine der Hauptfunktionen der 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.

Kryptographie-Prinzip

  1. Masterpasswort: Für die Verschlüsselung wird ein Masterpasswort verwendet, das nur dem Benutzer bekannt ist. Das Masterpasswort wird niemals an den Server gesendet;
  2. Masterschlüssel: Auf Basis des Masterpassworts wird ein Masterschlüssel mittels PBKDF2 (Password-Based Key Derivation Function 2) generiert;
  3. Masterschlüssel-Hash: Ein Hash des Masterschlüssels wird mittels SHA-256 berechnet. Dieser Hash wird an den Server gesendet, um den Client zu authentifizieren;
  4. Tresorschlüssel: Für jeden Tresor wird ein eindeutiger Schlüssel generiert, der zur Verschlüsselung von Passwörtern und anderen Daten in diesem Tresor verwendet wird;
  5. 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;
  6. Datenverschlüsselung: Symmetrische AES-Verschlüsselung im CBC-Modus mit PKCS7-Padding wird zur Verschlüsselung von Passwörtern und anderen vertraulichen Daten verwendet.

Verantwortung des API-Clients

gefahr

Wichtig: Gemäß der Zero-Knowledge-Architektur setzt die Passwork API voraus, dass kryptographische Operationen auf der Clientseite durchgeführt werden. Das bedeutet, dass die Ver- und Entschlüsselung von 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 Masterschlüssels auf Basis des Masterpassworts;
  • Verschlüsselung der Daten vor dem Senden an den Server;
  • Entschlüsselung der vom Server empfangenen Daten;
  • Berechnung des Masterschlüssel-Hashs für die Autorisierung;
  • Asymmetrische Verschlüsselung der Schlüssel beim Austausch mit anderen Benutzern.

Python-Connector

Um die Arbeit mit der API und die Implementierung aller notwendigen kryptographischen Operationen zu vereinfachen, stellt Passwork einen offiziellen Python-Connector bereit. Der Connector kapselt die gesamte Komplexität der Arbeit mit Kryptographie und der API in eine einfache programmatische Schnittstelle.

Der Python-Connector bietet:

  • Sitzungs- und Autorisierungsverwaltung;
  • Automatische Sitzungserneuerung über refreshToken;
  • Kryptographische Operationen (Verschlüsselung/Entschlüsselung);
  • Fertige Methoden für die wichtigsten API-Operationen;
  • Eine universelle call()-Methode für beliebige API-Anfragen.

Autorisierung und Sitzungsverwaltung

Autorisierung

Der Autorisierungsprozess läuft wie folgt ab:

  1. Der Passwork-Benutzer klickt auf der Registerkarte Autorisierung und 2FA im Abschnitt API-Token auf Paar generieren;
  2. Der Server gibt ein Token-Paar zurück: accessToken und refreshToken;
  3. Der Benutzer verwendet den accessToken für alle nachfolgenden Anfragen, indem er ihn dem Header Authorization: Bearer {accessToken} hinzufügt;
  4. Wenn die clientseitige Verschlüsselung aktiviert ist, erhält der Benutzer zusätzlich Passwork-MasterKeyHash und fügt diesen dem Header hinzu.

Sitzungsverwaltung und refreshToken

Die Passwork API verwendet Zugriffstoken mit begrenzter Gültigkeit:

  1. Access Token: Das Haupttoken für die Autorisierung von Anfragen. Hat eine begrenzte Lebensdauer (normalerweise Minuten oder Stunden);
  2. Refresh Token: Ein langlebiges Token, das verwendet wird, um ein neues Access Token ohne erneute Authentifizierung zu erhalten;
  3. Token-Erneuerung: Wenn das Access Token abläuft, erhält der Client einen 401-Fehler mit dem Code accessTokenExpired. In diesem Fall muss der Client eine Anfrage an den Endpunkt /api/v1/sessions/refresh mit dem aktuellen Refresh Token senden, um ein neues Token-Paar zu erhalten;
  4. Automatische Erneuerung: Der Python-Connector verarbeitet den Token-Ablauf automatisch und führt die Erneuerung ohne Benutzereingriff durch;
  5. Sitzungsspeicherung: Der Python-Connector ermöglicht das Speichern und Wiederherstellen von Sitzungen, was für langfristige Automatisierung praktisch ist. Gespeicherte Sitzungen werden aus Sicherheitsgründen verschlüsselt.

API-Antwortformat

Der Anfrage-Header X-Response-Format gibt das Format der API-Antwort an:

  • base64 — die Antwort des Servers wird in Base64-Kodierung zurückgegeben (Standardwert);
  • raw — die Antwort wird im JSON-Format zurückgegeben.

Fügen Sie den Header X-Response-Format: raw zur Anfrage hinzu, um die Antwort im JSON-Format zu erhalten. Für eine Base64-Antwort verwenden Sie X-Response-Format: base64 oder lassen Sie den Header weg.

Sicherheitsempfehlungen

Bei der Verwendung der Passwork API sollten die folgenden Sicherheitsempfehlungen beachtet werden:

  1. API-Schlüssel schützen: Speichern Sie API-Schlüssel sicher, verwenden Sie Umgebungsvariablen oder sichere Geheimspeicher;
  2. Schlüsselrotation: Aktualisieren Sie API-Schlüssel regelmäßig, um Risiken zu minimieren;
  3. HTTPS: Verwenden Sie ausschließlich HTTPS für die gesamte API-Kommunikation;
  4. Minimale Rechte: Erstellen Sie separate API-Benutzer mit minimal notwendigen Zugriffsrechten;
  5. Masterpasswort schützen: Speichern Sie das Masterpasswort mit maximalem Schutz, da eine Kompromittierung des Masterpassworts zur Kompromittierung aller Passwörter führt;
  6. Gespeicherte Sitzungen schützen: Stellen Sie einen zuverlässigen Schutz der gespeicherten Sitzungen und Verschlüsselungsschlüssel sicher;
  7. Fehlerbehandlung: Behandeln Sie API-Fehler sorgfältig und vermeiden Sie die Offenlegung sensibler Informationen in Protokollen.

API-Endpunkte und Funktionen

Tresore

  • Tresor erstellen: POST /api/v1/vaults
  • Tresorliste abrufen: GET /api/v1/vaults
  • Tresorinfo 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-access
    • POST /api/v1/vaults/{id}/revoke-user-access
  • Gruppenzugriff verwalten:
    • POST /api/v1/vaults/{id}/grant-user-group-access
    • POST /api/v1/vaults/{id}/revoke-user-group-access
  • Tresore importieren: POST /api/v1/vaults/import

Ordner

  • Ordner erstellen: POST /api/v1/folders
  • Ordnerliste abrufen: GET /api/v1/folders
  • Ordnerinfo abrufen: GET /api/v1/folders/{id}
  • Ordner aktualisieren: 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-access
    • POST /api/v1/folders/{id}/revoke-user-access
  • Ordner importieren/exportieren:
    • POST /api/v1/folders/import
    • POST /api/v1/directories/export

Einträge/Passwörter

  • Passwort erstellen: POST /api/v1/items
  • Passwortliste abrufen: GET /api/v1/items
  • Passwortinfo 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/bulk
    • POST /api/v1/items/move/bulk
    • POST /api/v1/items/delete/bulk
  • Passwörter importieren/exportieren:
    • POST /api/v1/items/import
    • POST /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
  • Benutzerliste abrufen: GET /api/v1/users
  • Benutzerinfo 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}/block
    • POST /api/v1/users/{id}/unblock
  • Zwei-Faktor-Authentifizierung:
    • POST /api/v1/users/2fa/set-up
    • POST /api/v1/users/2fa/set-state
    • POST /api/v1/users/2fa/reset

Benutzergruppen

  • Gruppe erstellen: POST /api/v1/user-groups
  • Gruppenliste abrufen: GET /api/v1/user-groups
  • Gruppeninfo abrufen: GET /api/v1/user-groups/{id}
  • Gruppe aktualisieren: POST /api/v1/user-groups/{id}
  • Gruppe löschen: DELETE /api/v1/user-groups/{id}
  • Gruppenmitglieder verwalten:
    • POST /api/v1/user-groups/{id}/add-users
    • POST /api/v1/user-groups/{id}/remove-users
  • Massenoperationen für Gruppen:
    • POST /api/v1/user-groups/delete/bulk
    • POST /api/v1/user-groups/set-state/bulk

Benutzerrollen

  • Rolle erstellen: POST /api/v1/user-roles
  • Rollenliste abrufen: GET /api/v1/user-roles
  • Rolleninfo 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 (Posteingang-Elemente)

  • 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 Posteingangs-Passwörter abrufen: GET /api/v1/inbox-items
  • Posteingangs-Passwort suchen: GET /api/v1/inbox-items/search
  • Posteingangs-Passwort abrufen: 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
  • 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 (Papierkorb-Elemente)

  • Papierkorbeinträge abrufen: GET /api/v1/bin-items
  • Papierkorbeintrag abrufen:
    • GET /api/v1/bin-items/{id}/folder
    • GET /api/v1/bin-items/{id}/item
    • GET /api/v1/bin-items/{id}/shortcut
  • Einträge wiederherstellen:
    • POST /api/v1/bin-items/restore/bulk
    • POST /api/v1/bin-items/restore-and-move/bulk
  • Einträge löschen:
    • DELETE /api/v1/bin-items/{id}
    • POST /api/v1/bin-items/delete/bulk
    • DELETE /api/v1/bin-items/all

Shortcuts

  • Shortcut erstellen: POST /api/v1/shortcuts
  • Shortcut-Liste abrufen: GET /api/v1/shortcuts
  • Shortcut-Info 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/bulk
    • POST /api/v1/shortcuts/copy/bulk
    • POST /api/v1/shortcuts/move/bulk
    • POST /api/v1/shortcuts/delete/bulk

Aktivitätsprotokoll

  • Protokolle abrufen: GET /api/v1/activity-logs
  • Ereignisinfo 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 Sitzungsinfo abrufen: GET /api/v1/sessions/current/info
  • Sitzungsliste abrufen: GET /api/v1/sessions
  • Sitzung löschen: DELETE /api/v1/sessions/{id}
  • Token erneuern: POST /api/v1/sessions/refresh

Einstellungen

  • Einstellungen abrufen/aktualisieren:
    • Passwörter:

      GET/PATCH /api/v1/settings/auth-password-complexity
    • Masterpasswörter:

      GET/PATCH /api/v1/settings/master-password-complexity
    • Oberfläche: 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
  • Einladungsliste abrufen: GET /api/v1/user-invites
  • Einladungsinfo 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