Zum Hauptinhalt springen
Stapelverarbeitung

Batch-API - Server-Verwaltung

Petr Pech avatar
Verfasst von Petr Pech
Vor über 3 Jahren aktualisiert

Für Partnerlösungen, die ABRA Flexi-Instanzen in der Cloud verwalten müssen, haben wir eine API vorbereitet, die dies ermöglicht. Der Status ist noch Beta und dieses Dokument beschreibt den geplanten Status. Bitte überprüfen Sie alles gründlich, bevor Sie es verwenden.

Authentifizierung von Anfragen gegen ABRA Flexi

ABRA Flexi unterstützt mehrere Methoden der sogenannten Server-Autorisierung:

  • Servername und Passwort - wenn Sie einen speziellen Namen und ein Passwort eingeben, wird die Serverautorisierung akzeptiert. Diese Lösung ist in der Cloud nicht anwendbar.

  • Client-Zertifikat - ermöglicht es uns, für jeden Partner oder jede Instanz ein Zertifikat zu haben, das die Verwaltung ermöglicht. Diese Lösung ist außerhalb der Cloud noch nicht einsetzbar.

Servername und Passwort

Für diese Art der Autorisierung müssen Sie /etc/flexibee/server-auth.xml bearbeiten und hinzufügen:

<?xml version="1.0"?>

Wenn der Server neu gestartet wird, werden der Benutzername und das Passwort nicht mehr akzeptiert.

Hinweis: Das Passwort muss mindestens 15 Zeichen lang sein. Dieses Passwort ermöglicht den Zugriff auf alle Daten der Anlage. Bewahren Sie es sicher auf!

Client-Zertifikat

Eine sicherere Methode ist die Verwendung eines Zertifikats. Damit können Sie sich für den Administratorzugriff autorisieren. Sie müssen HTTPS für die Kommunikation verwenden und sich mit Port 7000 verbinden. Nur der Zertifikatsfingerabdruck (SHA1-Fingerabdruck) wird auf dem Server gespeichert.

Der Zertifikatsfingerabdruck kann wie folgt ermittelt werden:

openssl x509 -noout -in cert.pem -fingerprint

Dieser Fingerabdruck muss an den Support gesendet werden und wird auf die Instanz oder den Instanzbaum (Gruppierung von Instanzen) gesetzt.

Benutzer-Identität

In einigen Fällen ist es erforderlich, dass sich der Server anmeldet und sich dann als einer der Benutzer ausgibt.

Dies kann durch Hinzufügen einer Kopfzeile erfolgen:

X-FlexiBee-Authorization: name.

Von diesem Zeitpunkt an werden alle Änderungen, einschließlich der Berechtigungen, unter diesem Benutzer vorgenommen.

API-Nutzungsszenarien

Die gesamte ABRA Flexi REST API arbeitet immer über eine einzige Datenbank mit Unternehmensdaten. Die Ausnahme ist die Verwaltung von Benutzern und Firmen. Diese wird aus dem Unternehmen entfernt und auf eine andere Art und Weise gespeichert. Bei einer regulären Installation befinden sich die Benutzerinformationen in der centralServer-Datenbank. Die Firmen befinden sich in einzelnen Datenbanken. Im Falle eines Cloud-Betriebs liegen die Informationen in der hochreplizierten CouchDB-Datenbank.

Wenn die Verarbeitung in mehreren Anfragen erfolgt, ist es möglich, dass der Serving-Server bei der Zuweisung von Benutzerrechten an eine Firma nicht weiß, dass die Firma oder der Benutzer bereits eingerichtet ist. Aus diesem Grund wurde diese Batch-API erstellt, bei der eine Liste von Operationen an einen einzigen Server übergeben und von diesem ausgeführt wird, um die Konsistenz zu gewährleisten.

Da die Anforderung fehlschlagen kann (z. B. wenn eine der Komponenten vorübergehend nicht verfügbar ist), kann die Anforderung erneut versucht werden. Danach wird wieder alles wie angegeben ausgeführt. Wenn bereits eine Änderung vorgenommen wurde, wird der Vorgang übersprungen (Vorgänge sind idempotent).

Erstellen eines ABRA Flexi-Instanz-Administratorkontos und einer Standard-Buchhaltungsfirma

Beim Anlegen des ADMIN-Kontos in ABRA Flexi wird die Standard-Buchhaltungsfirma entsprechend den Daten aus dem Auftrag angelegt (wir haben den Firmennamen, die ID-Nummer).

Es ist nicht möglich, eine Firma ohne einen Admin-Benutzer anzulegen.

<?xml version="1.0"?>

Standard-Benutzerrollen in ABRA Flexi

  • ADMIN

  • SUPERUSER

  • MZDOVYUCETNI

  • UCETNI

  • HANDELSMANAGER

  • COLLECTOR

  • LAGERHALTER

  • BENUTZER

  • JENCIST

  • GESPERRT

Typ der Organisation + Datensätze

Die doppelte Buchführung ist der Standard für alle Arten von Organisationen.

  • GESCHÄFT

  • ENTREPRENEURS+PU (doppelte Eingabe)

  • ENTREPRENEURS+DE (Steuerbuchhaltung)

  • ENTWICKLUNG

  • NON-PROFIT

  • ENTREPRENEURS (nur Slowakei)

Unterstützte Hash-Funktionen zum Speichern von Kennwörtern

  • sha256 (Standard für die Speicherung von im Klartext gesendeten Kennwörtern)

  • sha512

  • sha1

  • md5

  • pbkdf2 (die sicherste, aber auch die langsamste Methode - ohne Verwendung der REST-API-Sitzung ist sie dann unbrauchbar - sie ist absichtlich zu langsam).

Beispielprogramm zur Berechnung des Passwort-Fingerprints für ABRA Flexi.

import org.apache.commons.codec.binary.Hex; public static final String SHA256 = "sha256"; public static final String SEPARATOR = ":"; protected static String encryptPasswordSHA256(String plain, String salt) { String toDigest = salt + SEPARATOR + plain; try { MessageDigest md = MessageDigest.getInstance("SHA-256"); byte[] result = md.digest(toDigest.getBytes("utf-8")); return SHA256 + SEPARATOR + salt + SEPARATOR + new String(Hex.encodeHex(result)); } catch (UnsupportedEncodingException e) { throw new RuntimeException(e); } catch (GeneralSecurityException e) { throw new RuntimeException(e); } } } public static String getRandomSalt() { byte[] b = new byte[10]; new Random().nextBytes(b); return new String(Hex.encodeHex(b)).substring(10); } String plain = "mein Passwort"; String result = encryptPasswordSHA256(plain, getRandomSalt());

Zusätzliche "normale" Benutzer anlegen

Diese Benutzer werden vom Admin-Portal aus als neue Benutzer durch den Tenant-Administrator angelegt. Es wird auch in der Masse für mehrere Benutzer aufgerufen, wenn das Profil im Admin-Portal geändert wird.

<?xml version="1.0"?>

Es ist auch möglich, das Passwort ohne Flip zu speichern, aber es wird dringend davon abgeraten!

Ändern des Kennworts eines vorhandenen Benutzers

<?xml version="1.0"?>

Löschen eines bestehenden Benutzers

Löschen eines Benutzers aus dem Admin-Portal = Lizenzfreigabe. Es wird auch in der Masse für mehrere Benutzer aufgerufen, wenn das Profil geändert wird.

<?xml version="1.0"?>

Hinweis: Wenn ein Benutzer gelöscht wurde und ich später das Erstellungsdatum setze, sollte er wiederhergestellt werden.

Wiederherstellung des Benutzers

<?xml version="1.0"?>

Hinweis: Wenn Sie einen Benutzer erstellen und aktualisieren, wird zunächst versucht, Datensätze mit dem Kennzeichen "gelöscht" zu recyceln. Alle Zugriffs- und Rolleneinstellungen bleiben erhalten.

Blockieren eines vorhandenen Benutzers

Sperren eines Benutzers für das Admin-Portal = kann sich nicht anmelden.

<?xml version="1.0"?>
<flexibee-batch id="abc-123456">
  <user action="create-update">
    <Benutzername>anna.mlada</Benutzername>
    <blocked message="Vom externen System blockiert">true</blocked>
  </user>
</flexibee-batch>

Benutzer entsperren

<?xml version="1.0"?>
<flexibee-batch id="abc-123456">
  <user action="create-update">
    <Benutzername>anna.mlada</Benutzername>
    <blocked>false</blocked>
  </user>
</flexibee-batch>

Hinzufügen der Rolle ADMIN zu einem vorhandenen Benutzer

Fügen Sie dem Admin-Portal die atomare Rolle "ERP-Administrator" hinzu. Kann auch in der Masse für mehrere Benutzer aufgerufen werden, wenn das Profil im Admin-Portal geändert wird.

<?xml version="1.0"?>

Entfernen Sie die ADMIN-Rolle von einem vorhandenen Benutzer

Entfernen Sie die atomare Rolle "ERP-Administrator" im Admin-Portal. Kann auch in der Masse für mehrere Benutzer aufgerufen werden, wenn das Profil im Admin-Portal geändert wird.

<?xml version="1.0"?>
<flexibee-batch id="abc-12345678">
  <user action="create-update">
    <username>anna.mlada</username>
    <defaultRole>UZIVATEL</defaultRole>
  </user>
  <access role="UZIVATEL"/>
</flexibee-batch>

Ändern des Vornamens, Nachnamens eines vorhandenen Benutzers

<?xml version="1.0"?>
<flexibee-batch id="abc-123456789">
  <user action="create-update">
    <Benutzername>anna.mlada</Benutzername>
    <Geschenkname>Anique</Geschenkname>
    <Familienname>&#xC4;ltere</Familienname>
  </user>
</flexibee-batch>

Firma ausblenden / anzeigen (Verbindung trennen)

<?xml version="1.0"?>
<flexibee-batch id="abc-123">
  <company action="create-update">
    <id>digital_media_s_r_o_</id>
    <show>false</show>
    <!-- true to show -->
  </company>
</flexibee-batch>

Löschen einer Firma

<?xml version="1.0"?>
<flexibee-batch id="abc-123">
  <company action="delete">
    <id>digital_media_s_r_o_</id>
  </company>
</flexibee-batch>

Verwenden der API

Gültig für die erste veröffentlichte Testversion mit funktionaler Benutzeranlage in der zentralen Datenbank.

Rufen Sie an.

Die Anfrage muss autorisiert sein.

XML mit der Anfrage kann mit curl wie folgt gesendet werden:

curl -3 'https://server:7000/admin/batch' -T batch.xml -E cert.pem

Musteranforderung

batch.xml

<?xml version="1.0"?>
<flexibee-batch id="abc-123">
  <!-- Die ID sollte die Charge eindeutig identifizieren -->
  <user>
    <username>anna.mlada</username>
    <password hash="sha256" salt="xyz987">af123bd35</password>
    <email>anna.mlada@firma.cz</email>
    <givenName>Anna</givenName>
    <familyName>Jung</familyName>
    <permissions>
      <manageAll>true</manageAll>
      <createCompany>true</createCompany>
      <deleteCompany>true</deleteCompany>
      <createUser>false</createUser>
      <changePassword>false</changePassword>
      <grantPermission>true</grantPermission>
      <licenseManagement>false</licenseManagement>
    </permissions>
    <defaultRole>USER</defaultRole>
  </user>
  <company action="create-update">
    <!-- action="create-update" ist die Standardaktion -->
    <id>meine_firma_s_r_o_</id>
    <name>Meine Firma GmbH.</name>
    <country>CZ</country>
    <!-- CZ und SK werden derzeit unterstützt -->
    <regNo>123</regNo>
    <!-- ID-Nummer -->
    <vatId>CZ123</vatId>
    <!-- TIN-Nummer -->
    <type>SIGNATUREN</type>
    <adminUser>anna.mlada</adminUser>
  </company>
  <company action="delete">
    <id>demo_a_s_</id>
  </company>
  <access role="ADMIN">anna_mlada_s_r_o_</access>
  <access role="UZIVATEL">mein_Unternehmen_s_r_o_</access>
  <access>demo_a_s_</access>
  <access role="ADMIN"/>
  <access>demo_a_s_</access>
</flexibee-batch>

Antwort

Bei Erfolg (HTTP 200) wird XML in diesem Format gesendet:

<?xml version="1.0"?>

Aufzählung der Entitätstypen

  • BENUTZER

  • UNTERNEHMEN

  • ZUGRIFF_LISTE

Liste der Aktionsart

  • ERSTELLEN_UPDATE

  • DELETE

Liste der Statuscodes

  • GESCHAFFEN

  • AKTUALISIERT

  • GELÖSCHT

  • FAILED (Beschreibung des Grundes für den Fehler wird im <message>-Element stehen)

  • SKIPPED (kann dem <message>-Element hinzugefügt werden)

Hat dies deine Frage beantwortet?