User Tools

Site Tools


de:cobi.wms:berechtigungsverwaltung

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
de:cobi.wms:berechtigungsverwaltung [2025/10/21 15:00] thuthde:cobi.wms:berechtigungsverwaltung [2025/10/22 09:40] (current) – [Lizenzen importieren] thuth
Line 1: Line 1:
 ===== Berechtigungsverwaltung ===== ===== Berechtigungsverwaltung =====
  
-==== Lizenzzuweisung ====+ 
 + 
 +Die COBI.wms Management-Datenbank kann in **On-Premises- oder Private-Cloud-Umgebungen** installiert werden, in denen Sie direkten Zugriff auf den Datenbankserver haben und dort eigene Datenbanken erstellen können. 
 +Die Management-Datenbank ermöglicht es Ihnen, zentral Verbindungen zu SAP-Business-One-Datenbanken, COBI.wms-Benutzern und Geräten sowie Modulberechtigungen zu definieren und zu verwalten. 
 + 
 +===== Erstellen der Datenbank ===== 
 + 
 +Wenn Sie MS SQL Server verwenden, führen Sie den Inhalt der folgenden Datei im SQL Server Management Studio aus: 
 + 
 +{{ :cobi.wms:cobiwms-mssql.sql |}} 
 + 
 +Wenn Sie SAP HANA verwenden, führen Sie stattdessen Folgendes im **HANA Studio** aus: 
 + 
 +{{ :cobi.wms:cobiwms-hana.sql |}} 
 + 
 +===== Firmenverbindungen ===== 
 + 
 +Sie müssen SAP-Business-One-Datenbankverbindungen definieren, indem Sie Datensätze in die Tabelle **companies** einfügen. 
 + 
 +In der Regel müssen nur die folgenden Spalten ausgefüllt werden: 
 + 
 +^ Spalte        ^ Typ / Gültige Werte ^ Beschreibung ^ 
 +| CompanyID     | Text                | Eindeutige Kennung für diese Verbindung | 
 +| SQLDB         | Text                | Name der SAP-Business-One-Datenbank | 
 +| APIType       | ''SL'' oder ''IF''  | SL für Service Layer; IF für Integration Framework | 
 +| APIURL        | Text                | Service-Layer-URL oder Integration-Framework-Trigger-URL | 
 +| APIID         | Text                | Für SL: identisch mit SQLDB; für IF: Firmen-ID im IF-SLD | 
 +| APIUsername   | Text oder ''NULL''  | Für SL: SAP-Business-One-Benutzername; für IF: ''NULL''
 +| APIPassword   | Text oder ''NULL''  | Für SL: SAP-Business-One-Passwort; für IF: ''NULL''
 + 
 +**Tipp:** Sie können die Zeichenfolge **''{host}''** als Teil des ''APIURL''-Wertes verwenden, damit die App denselben Hostnamen (oder dieselbe IP-Adresse) wie die Management-Datenbank verwendet. 
 + 
 +**Tipp:** *(nur für Service Layer)* 
 +Wenn Sie möchten, dass Lagerbenutzer sich mit individuellen Logins anmelden, können Sie die Felder ''APIUsername'' und ''APIPassword'' leer lassen und stattdessen die Felder ''APIUser'' und ''APIPass'' in der Tabelle **Users** ausfüllen, wie im Abschnitt [[#separater-login-pro-benutzer|Separater Login pro Benutzer]] beschrieben. 
 + 
 +**Hinweis:** 
 +Wenn der ''ApiType'' auf ''SL'' steht, kann die Spalte ''SQLDB'' leer bleiben. Dadurch verwendet die App eine reine Service-Layer-Verbindung (ähnlich einer Cloud-Umgebung). 
 +Dies wird jedoch **nicht empfohlen**, da eine direkte Datenbankverbindung deutlich mehr Leistung und Stabilität bietet. 
 +Die Spalte ''SQLDB'' sollte daher bei **allen On-Premises-Installationen** ausgefüllt werden. 
 + 
 +Weitere Informationen: [[COBI.wms:Architecture]] 
 + 
 +Beispiel für das Hinzufügen einer **Produktiv-** und einer **Testverbindung** in einer On-Premises-Umgebung mit unverschlüsselter Service-Layer-Kommunikation (kein SSL-Zertifikat erforderlich): 
 + 
 +<code sql> 
 +insert into companies (companyId, sqlDb, apiType, apiUrl, apiId, apiUsername, apiPassword) values 
 +('01 - PROD', 'SBO_PROD', 'SL', 'http://{host}:50001/b1s/v2', 'SBO_PROD', 'manager', 'secret'); 
 + 
 +insert into companies (companyId, sqlDb, apiType, apiUrl, apiId, apiUsername, apiPassword) values 
 +('02 - TEST', 'SBO_TEST', 'SL', 'http://{host}:50001/b1s/v2', 'SBO_TEST', 'manager', 'secret'); </code> 
 + 
 +**Hinweis:** 
 +Die obigen Beispiele verwenden **''http:''** statt **''https:''** sowie den Port **50001** statt **50000**. 
 +Dies bedeutet, dass die Kommunikation mit dem Service Layer **unverschlüsselt** erfolgt und die App den **Load Balancer überspringt**, um direkt **Node 1** des Service Layers anzusprechen. 
 + 
 +Wenn Sie **verschlüsselte Kommunikation** mit dem Service Layer wünschen oder **Performanceprobleme** durch das Umgehen des Load Balancers auftreten, müssen Sie sicherstellen, dass ein **gültiges SSL-Zertifikat** installiert ist und anschließend **„http“ in „https“** sowie **Port 50001 in 50000** ändern. 
 + 
 +==== Optionale Spalten ==== 
 + 
 +Die folgenden Spalten der Tabelle **companies** sollten in der Regel leer bleiben (''NULL'' oder leerer Text): 
 + 
 +^ Spalte         ^ Typ / Gültige Werte ^ Beschreibung ^ 
 +| DBType         | ''MSSQL'' oder ''HANA'' | MSSQL für SQL Server, HANA für SAP HANA | 
 +| SQLHost        | Text | Hostname oder IP-Adresse des Datenbankservers | 
 +| SQLPort        | Text | Portnummer des Datenbankservers | 
 +| SQLUser        | Text | Datenbank-Benutzername (z. B. 'sa' oder 'SYSTEM') | 
 +| SQLPass        | Text | Datenbank-Passwort | 
 +| SQLDomain      | Text | Domäne für „Trusted Connection“ im SQL Server | 
 +| HANAProxyHost  | Text | Hostname oder IP-Adresse des HANA Proxy | 
 +| HANAProxyPort  | Text | Portnummer des HANA Proxy | 
 +| Profile        | Text | Aktiviert ein kundenspezifisches Profil | 
 +| PrintService   | Text | Adresse des COBI.wms Print Service | 
 + 
 +Die Spalten ''DBType'', ''SQLHost'', ''SQLUser'' und ''SQLPass'' müssen nur ausgefüllt werden, wenn sich die SAP-Business-One-Datenbank **auf einem anderen Server** befindet als die Management-Datenbank. 
 +Die Spalte ''SQLPort'' wird nur benötigt, wenn der Server nicht den Standardport verwendet (1433 für MS SQL Server, 30015 für SAP HANA). 
 + 
 +''HANAProxyHost'' muss nur gefüllt werden, wenn der Proxy nicht auf demselben Server wie die HANA-Datenbank läuft. 
 +''HANAProxyPort'' nur, wenn der Proxy einen anderen Port als den Standardwert 30075 nutzt. 
 + 
 +Die Spalte ''Profile'' wird verwendet, um kundenspezifische Anpassungen zu aktivieren, und sollte leer bleiben, sofern nichts anderes angegeben wurde. 
 + 
 +Die Spalte ''PrintService'' kann genutzt werden, um zentral die Adresse des [[Print Service|COBI.wms Print Service]] zu definieren. 
 +Wenn sie hier nicht gesetzt ist, muss sie direkt auf jedem Android-Gerät in den [[Print Settings]] der App hinterlegt werden. 
 +Bei Verwendung des Standardports genügt die Angabe des Hostnamens oder der IP-Adresse. 
 +Bei einem abweichenden Port geben Sie den Wert im Format ''HOST:PORT'' ein. 
 + 
 +===== Geräte und Benutzer ===== 
 + 
 +==== COBI.wms-Geräte ==== 
 + 
 +Geräte registrieren sich automatisch, sobald sie eine Verbindung zur Management-Datenbank herstellen. 
 + 
 +Jedes Gerät erhält eine **numerische ID** beginnend bei 1. Diese ist im Login-Bildschirm der App unten rechts unterhalb des Login-Buttons sichtbar. 
 + 
 +Ein Gerät kann über die Prozedur **''removeDevice''** entfernt werden: 
 + 
 +<code sql> 
 +-- MS SQL Server 
 +exec removeDevice 1; 
 + 
 +-- SAP HANA 
 +call removeDevice(1); </code> 
 + 
 +==== COBI.wms-Benutzer ==== 
 + 
 +Dieser Abschnitt ist **optional** – die App kann auch **ohne definierte COBI.wms-Benutzer** in der Management-Datenbank verwendet werden. 
 + 
 +Sie können jedoch COBI.wms-Benutzer hinzufügen, um den Zugriff auf die App genauer zu steuern und nachzuvollziehen, **welcher Benutzer welche Aktionen** ausgeführt hat. 
 +Die Felder „Username“ und „Password“ erscheinen in der App nur, wenn mindestens ein COBI.wms-Benutzer vorhanden ist. 
 + 
 +Zum Hinzufügen eines Benutzers verwenden Sie die Prozedur **''addUser''**: 
 + 
 +<code sql> 
 +-- MS SQL Server 
 +exec addUser 'user1', 'password', NULL, NULL, 'Full Name'; 
 + 
 +-- SAP HANA 
 +call addUser('user1', 'password', NULL, NULL, 'Full Name'); </code> 
 + 
 + 
 +Der Erste Parameter: Benutzer-ID (gleichzeitig der Login-Name). Kann z. B. „alice“, „bob“, „manager“ oder „produktion1“ sein. \\ 
 + 
 +Zweiter Parameter: Passwort. Darf nicht NULL sein, kann aber ein leerer String sein (''<nowiki>''</nowiki>'') – dann ist kein Passwort erforderlich. \\ 
 + 
 +Dritter und vierter Parameter: Veraltet, bitte ''NULL'' verwenden. \\ 
 + 
 +Letzter Parameter: Vollständiger Name oder Beschreibung des Benutzers, kann auch ''NULL'' sein. 
 + 
 +Das Passwort eines Benutzers kann mit der Prozedur ''resetPassword'' zurückgesetzt werden: 
 + 
 +<code sql> 
 +-- MS SQL Server 
 +exec resetPassword 'user1', 'new password'; 
 + 
 +-- SAP HANA 
 +call resetPassword('user1', 'new password'); </code> 
 + 
 +Benutzer können mit ''removeUser'' gelöscht werden: 
 + 
 +<code sql> 
 +-- MS SQL Server 
 +exec removeUser 'user1'; 
 + 
 +-- SAP HANA 
 +call removeUser('user1'); </code> 
 + 
 +==== Separater Login pro Benutzer ==== 
 + 
 +Sie können für jeden COBI.wms-Benutzer oder jedes Gerät einen **separaten SAP-Business-One-Login** hinterlegen. 
 +Dadurch kann im SAP-Änderungsprotokoll nachvollzogen werden, **welcher Benutzer oder welches Gerät** einen Beleg gebucht oder geändert hat. 
 + 
 +Zum Hinterlegen des Logins führen Sie folgenden SQL-Befehl in der Management-Datenbank aus: 
 + 
 +<code sql> 
 +update users 
 +set apiUser = 'sbo_username',  
 +    apiPass = 'sbo_password' 
 +where userId = 'cobiwms_username'; 
 +</code> 
 + 
 +Wenn Sie keine COBI.wms-Benutzer verwenden, können Sie denselben Ansatz für Geräte nutzen. 
 +Jedes registrierte Gerät erstellt automatisch einen speziellen COBI.wms-Benutzer namens ''_deviceXXXX'' (wobei ''XXXX'' die Geräte-ID ist). 
 +Sie können diesen Benutzern individuelle SAP-Business-One-Logins zuweisen: 
 + 
 +<code sql> 
 +update users 
 +set apiUser = 'wms0001',  
 +    apiPass = 'password' 
 +where userId = '_device0001'; 
 + 
 +update users 
 +set apiUser = 'wms0002', 
 +apiPass = 'password' 
 +where userId = '_device0002'; 
 +-- usw. </code> 
 + 
 +Nachdem Sie die **users**-Tabelle entsprechend aktualisiert haben, starten Sie die COBI.wms-App neu. 
 +Bei der nächsten Anmeldung wird die Änderung aktiv. 
 +Sie können eine Testbuchung durchführen und anschließend im SAP-Änderungsprotokoll prüfen, ob der korrekte Benutzer aufgeführt wird. 
 + 
 +**Warnung:** 
 +Wenn Sie das SAP-Business-One-Passwort im Feld ''apiPass'' speichern, wird dieses **im Klartext** in der Management-Datenbank abgelegt – ebenso wie das Feld ''apiPassword'' in der Tabelle ''companies''
 +Dies stellt in der Regel kein Risiko dar, solange keine unbefugten Personen Zugriff auf den Server haben. 
 +Falls dies dennoch ein Problem für Sie darstellt, siehe den folgenden Abschnitt. 
 + 
 +==== Vermeidung von Klartext-Passwörtern in der Datenbank ==== 
 + 
 +Normalerweise muss das Passwort eines SAP-Business-One-Benutzers entweder in der Spalte **''apiPassword''** (Tabelle ''companies'') oder **''apiPass''** (Tabelle ''users'') angegeben werden. 
 + 
 +(Technischer Hinweis: Eine Verschlüsselung dieser Spalten wäre sinnlos, da der Schlüssel zum Entschlüsseln in der App enthalten sein müsste und somit ausgelesen werden könnte. Eine Speicherung als Hash ist ebenfalls nicht möglich, da das Passwort im Klartext an den Service Layer übermittelt werden muss.)* 
 + 
 +Um dies zu vermeiden, kann folgende Strategie verwendet werden: 
 + 
 +  - Lassen Sie die Felder ''apiPassword'' und ''apiPass'' leer. 
 +  - Erstellen Sie COBI.wms-Benutzer mit denselben Benutzernamen und Passwörtern wie in SAP Business One. 
 + 
 +Wenn Sie sich in der App anmelden, nutzt COBI.wms zunächst diese Zugangsdaten für den COBI.wms-Login. 
 +Danach prüft die App, ob für den Service Layer ein Passwort in ''apiPassword'' oder ''apiPass'' hinterlegt ist. 
 +Sind diese Felder leer, werden einfach dieselben Zugangsdaten aus dem COBI.wms-Login verwendet, um sich beim Service Layer anzumelden. 
 + 
 +Wenn also Benutzername und Passwort identisch mit denen des SAP-Benutzers sind, funktioniert die Anmeldung automatisch. 
 + 
 +(Technischer Hinweis: Das Passwort eines COBI.wms-Benutzers wird nicht im Klartext, sondern als sicherer Hashwert gespeichert, da es nicht an externe Systeme übermittelt wird.) 
 + 
 +Hier ist der Text in gut lesbarem, wiki-tauglichem Deutsch übersetzt: 
 + 
 +==== Lizenzmodell ==== 
 + 
 +Jeder parallele Zugriff auf COBI.wms erfordert eine eigene Lizenz. 
 +Wenn beispielsweise maximal drei Personen COBI.wms gleichzeitig nutzen sollen, werden drei Lizenzen benötigt. 
 + 
 +Dabei können Sie selbst entscheiden, ob Sie die Lizenzen gerätebasiert oder benutzerbasiert vergeben möchten. 
 + 
 +Sie können Ihre Lizenzen beispielsweise drei Geräten zuweisen. In diesem Fall kann jede Person diese Geräte verwenden – unabhängig davon, ob sie über einen COBI.wms-Benutzer verfügt oder nicht. 
 + 
 +Alternativ können Sie die Lizenzen drei COBI.wms-Benutzern zuweisen. Diese Benutzer können sich dann mit ihrem Login auf beliebig vielen Android-Geräten anmelden und COBI.wms nutzen. 
 + 
 +Es ist auch möglich, beide Modelle zu kombinieren. 
 +Beispielsweise können Sie zwei Lizenzen Geräten zuweisen, damit diese von jedem genutzt werden können, und die dritte Lizenz einem Benutzer, damit dieser sich von beliebigen Android-Geräten aus anmelden kann. 
 + 
 +==== Lizenzen importieren ==== 
 + 
 +Lizenzen können ganz einfach durch das Ausführen von INSERT-Befehlen importiert werden: 
 + 
 +<code sql> 
 +-- Ersetzen Sie LICENSE_1, LICENSE_2 usw. durch die tatsächlichen Lizenzschlüssel, die Apostrophe müssen beibehalten werden. 
 +insert into licenses (license) values ('LICENSE_1'); 
 +insert into licenses (license) values ('LICENSE_2'); 
 +insert into licenses (license) values ('LICENSE_3'); 
 +</code> 
 + 
 +Die Tabelle licenses enthält außerdem eine optionale Spalte ''notes'', die Sie für Anmerkungen zur jeweiligen Lizenz verwenden können. 
 +Dies ist beispielsweise nützlich, wenn Sie sowohl COBI.wms-Lizenzen als auch COBI.ppc-Lizenzen in derselben Datenbank verwalten und diese voneinander unterscheiden möchten. 
 +Oder wenn Sie Testlizenzen importieren, die nur für einen begrenzten Zeitraum gültig sind, können Sie dies in der Notiz vermerken. 
 + 
 +Beispiele: 
 + 
 +<code sql> 
 +insert into licenses (license, notes) values ('LICENSE_1', 'WMS'); 
 +insert into licenses (license, notes) values ('LICENSE_2', 'PPC'); 
 +insert into licenses (license, notes) values ('LICENSE_3', 'PPC, gültig bis November 2023'); 
 +</code> 
 + 
 +==== Lizenzen Zuordnen ====
  
 === Massenbearbeitung der Tabelle LICENSES === === Massenbearbeitung der Tabelle LICENSES ===
  
-Die Information, welchem Benutzer oder Gerät eine Lizenz zugewiesen ist, befindet sich direkt in der Tabelle **LICENSES** der Management-Datenbank.+Die Information, welchem Benutzer oder Gerät eine Lizenz zugewiesen ist, befindet sich direkt in der Tabelle LICENSES der Management-Datenbank.
 Wenn Sie eine größere Anzahl von Änderungen vornehmen möchten, ist es oft am einfachsten, diese Tabelle direkt zu bearbeiten. Wenn Sie eine größere Anzahl von Änderungen vornehmen möchten, ist es oft am einfachsten, diese Tabelle direkt zu bearbeiten.
  
-Beispielsweise können Sie im **MS SQL Server Management Studio** mit der rechten Maustaste auf die Tabelle **LICENSES** klicken und **„Edit Top 200 Rows“ (Oberste 200 Zeilen bearbeiten)** auswählen. +Beispielsweise können Sie im MS SQL Server Management Studio mit der rechten Maustaste auf die Tabelle LICENSES klicken und „Edit Top 200 Rows“ (Oberste 200 Zeilen bearbeiten) auswählen. 
-Dort können Sie die Spalten **UserID** oder **DeviceID** jeder Lizenz direkt bearbeiten. +Dort können Sie die Spalten UserID oder DeviceID jeder Lizenz direkt bearbeiten. 
-*(Hinweis: Für jede Lizenz darf immer nur **eine** dieser beiden Spalten gefüllt sein – die andere muss auf **NULL** stehen.)*+(Hinweis: Für jede Lizenz darf immer nur eine dieser beiden Spalten gefüllt sein – die andere muss auf NULL stehen.)
  
 === Verwendung von gespeicherten Prozeduren === === Verwendung von gespeicherten Prozeduren ===
  
 Zum Zuweisen von Lizenzen an Geräte oder Benutzer können Sie auch die gespeicherten Prozeduren Zum Zuweisen von Lizenzen an Geräte oder Benutzer können Sie auch die gespeicherten Prozeduren
-**''assignDeviceLicense''** und **''assignUserLicense''** verwenden.+''assignDeviceLicense'' und ''assignUserLicense'' verwenden.
 Diese prüfen automatisch, ob noch freie (nicht zugewiesene) Lizenzen verfügbar sind, und verwenden eine davon: Diese prüfen automatisch, ob noch freie (nicht zugewiesene) Lizenzen verfügbar sind, und verwenden eine davon:
  
Line 29: Line 272:
 call assignUserLicense('user1'); -- Weist Benutzer 'user1' eine freie Lizenz zu </code> call assignUserLicense('user1'); -- Weist Benutzer 'user1' eine freie Lizenz zu </code>
  
-Zum **Entziehen von Lizenzen** können Sie die Prozeduren +Zum Entziehen von Lizenzen können Sie die Prozeduren 
-**''revokeDeviceLicense''** und **''revokeUserLicense''** verwenden.+''revokeDeviceLicense'' und ''revokeUserLicense'' verwenden.
 Dadurch wird die aktuell verwendete Lizenz des entsprechenden Geräts oder Benutzers wieder freigegeben und kann anschließend einem anderen Benutzer oder Gerät zugewiesen werden: Dadurch wird die aktuell verwendete Lizenz des entsprechenden Geräts oder Benutzers wieder freigegeben und kann anschließend einem anderen Benutzer oder Gerät zugewiesen werden:
  
de/cobi.wms/berechtigungsverwaltung.1761051617.txt.gz · Last modified: by thuth

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki