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>Ä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.
HTTP PUT an URL = http://server:7000/admin/batch
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)