Zum Hauptinhalt springen

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:

/<passwork>/www/latest/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

  1. Master-Passwort: Die Verschlüsselung verwendet ein Master-Passwort, das nur dem Benutzer bekannt ist. Das Master-Passwort wird niemals an den Server gesendet;
  2. Master-Schlüssel: Basierend auf dem Master-Passwort wird mit PBKDF2 (Password-Based Key Derivation Function 2) ein Master-Schlüssel generiert;
  3. 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.
  4. 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.
  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: 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:

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

Sitzungsbehandlung und RefreshToken

Passwork API verwendet Zugriffstoken mit begrenzter Gültigkeit:

  1. Zugriffstoken: Das Haupttoken zum Autorisieren von Anfragen. Hat eine begrenzte Lebensdauer (normalerweise Minuten oder Stunden);
  2. Aktualisierungstoken: Ein langlebiges Token, mit dem ein neues Zugriffstoken ohne erneute Authentifizierung erhalten werden kann.
  3. Token-Erneuerung: Wenn das Zugriffstoken abläuft, erhält der Client einen 401-Fehler mit dem Code accessTokenExpired. Normalerweise ruft der Client POST /api/v1/sessions/refresh mit Authorization: Bearer und einem JSON-Body auf, der refreshToken enthä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;
  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, 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:

  1. Schützen Sie API-Schlüssel: Speichern Sie API-Schlüssel sicher, verwenden Sie Umgebungsvariablen oder sichere Geheimspeicher;
  2. Schlüsselrotation: API-Schlüssel regelmäßig aktualisieren, um Risiken zu minimieren;
  3. HTTPS: Verwenden Sie nur HTTPS für alle API-Kommunikationen;
  4. Geringeste Berechtigung: Erstellen Sie separate API-Benutzer mit minimalen erforderlichen Zugriffsrechten;
  5. 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;
  6. Gespeicherte Sitzungen schützen: Stellen Sie einen zuverlässigen Schutz gespeicherter Sitzungen und Verschlüsselungsschlüssel sicher.
  7. 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-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
  • 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-access
    • POST /api/v1/folders/{id}/revoke-user-access
  • Ordner importieren/exportieren:
    • POST /api/v1/folders/import
    • POST /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/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
  • 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}/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
  • 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-users
    • POST /api/v1/user-groups/{id}/remove-users
  • Massengruppenoperationen:
    • 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
  • 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
  • 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}/folder
    • GET /api/v1/bin-items/{id}/item
    • GET /api/v1/bin-items/{id}/shortcut
  • Elemente wiederherstellen:
    • POST /api/v1/bin-items/restore/bulk
    • POST /api/v1/bin-items/restore-and-move/bulk
  • Elemente löschen:
    • DELETE /api/v1/bin-items/{id}
    • POST /api/v1/bin-items/delete/bulk
    • DELETE /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/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
  • 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