Keycloak Rollen und Mandantentfilterung

Rollen in Keycloak

Diese Dokumentation ist für B2B Administratoren vorgesehen

Rollen-Management

Das Rollenmanagement in Keycloak kann über die Seite Rollen durchgeführt werden. Sie können die Rollen über das Menü auf der linken Seite aufrufen, wie Sie in der Abbildung unten sehen können. Bitte stellen Sie sicher, dass Sie sich im richtigen Realm (hier b2b-qa) befinden.

Abbildung 1.1

Standard-Rollen

Die Registerkarte Default Roles kann verwendet werden, um Rollen zur Liste der Realm-Standardrollen hinzuzufügen, wie im Screenshot unten gezeigt. Sobald sich eine Rolle in der Liste der Realm-Standardrollen befindet, wird sie automatisch jedem neuen Benutzer zugewiesen, der in diesem Realm angelegt wird.

Abbildung 1.2

Ansichts- und Suchrollen

Die Liste der verfügbaren Rollen ist weiter unten auf dieser Seite zu sehen.

Abbildung 1.3

Der Benutzer kann Rollen anhand des Rollennamens suchen, wie in der Abbildung unten gezeigt.

Abbildung 1.4

Rollen hinzufügen

Der Benutzer kann neue Rollen hinzufügen, indem er auf die Schaltfläche Add Role (Rolle hinzufügen) in der oberen rechten Ecke der Rollentabelle klickt. Siehe Screenshot unten.

Abbildung 1.5

Rolle hinzufügen: Der Benutzer kann den Rollennamen und seine Beschreibung hinzufügen und auf die Schaltfläche “Speichern” klicken, wie im Screenshot unten gezeigt.

Abbildung 1.6

Rollen bearbeiten

Der Benutzer kann Rollen bearbeiten, indem er auf die Schaltfläche Edit rechts unter den Aktionsspalten in der Rollentabelle klickt. Siehe Screenshot unten.

Abbildung 1.7

Der Benutzer kann die Rollenbeschreibung bearbeiten. (Die Funktion “Composite Roles” wird nicht verwendet)

Abbildung 1.8

Der Benutzer kann auch die an diese Rolle gebundenen Benutzer anzeigen. Siehe Screenshot unten.

Abbildung 1.9

Rollen löschen

Der Benutzer kann jede beliebige Rolle löschen, indem er in der Rollentabelle in der Spalte Aktionen auf die Schaltfläche Delete klickt, wie in der Abbildung unten dargestellt.

Abbildung 1.10

Wenn Sie auf Löschen klicken, wird ein Bestätigungsdialogfeld angezeigt, um das Löschen zu bestätigen. Der Benutzer kann auf “Delete” klicken, um die Rolle zu löschen, oder auf “Cancel”, um zurückzugehen.

Abbildung 1.11

Liste der verfügbaren Rollen

Dies sind die verfügbaren Rollen im B2B-, und FSS-Bereich mit ihren kurzen Beschreibungen

Rolle Description
b2bbp Standardrolle für den Zugriff auf das B2B-Backend. Wird für die meisten Aufgaben in B2B-UI & B2B-Admin-UI benötigt.
B2B-Dashboard So greifen Sie auf die Dashboard-Seite in der B2B-UI zu
B2B-Edijson-Read Rolle um (via OAuth2) die Nachrichten im edi-json Format oder deren json Meta-Daten abrufen zu können
B2B-Edijson-Write Rolle um (via OAuth2) Nachrichten im edi-json Format zum (ausgehenden) Versand in die B2B zu geben
B2B-MessageMonitor-Read So greifen Sie auf den B2B Messagemonitor, den Schaltflächen zum CVS/ZIP Herunterladen in B2B-UI zu
B2B-MessageMonitor-TechnicalDetails So greifen Sie auf die technischen Details einer Nachricht im B2B Messagemonitor zu
B2B-MessageMonitor-Write Um auf die Schaltflächen zum Tabelle anpassen, Statusänderung und direkte Neustart-Aktionen durchzuführen zu können zuzugreifen
B2B-MpidEditor-Read Um lesen Zugriff auf den MPID Editor zu erhalten
B2B-MpidEditor-Write Um auf die Schaltflächen zum Erstellen, Löschen, Ändern von E-Mails und Synchronisieren von allen Daten im MPID Editor zuzugreifen
B2B-MpidEditor-Write-ContactData Um auf die Schaltflächen zum Erstellen, Ändern, Löschen und Herunterladen von Martpartner-Kontaktdaten im MPID Editor zuzugreifen
B2B-SystemSwitch So erhalten Sie Zugriff auf das Systemweichen-Modul in der B2B-UI
B2B-SystemSwitchAdmin Um Kanalfilter zu haben und die Kanalspalte im Systemweichen-Modul anzuzeigen
B2B-ManualMarketCommunication So greifen Sie auf das Modul Manuelle Marktkommunikation in der B2B-UI zu
B2B-General Bereitstellung des Zugriffs auf alle Funktionen in B2B-UI, die nicht durch eine andere spezifische Rolle geschützt sind (sollte nur in Ausnahmefällen zum Einsatz kommen)
FSS-CertificateManager-Read Um Zertifikate im Fastlane Security Server anzuzeigen
FSS-CertificateManager-Write Um zusätzliche Aktionen wie Hinzufügen, Aktualisieren und Löschen im Fastlane Security Server durchzuführen
FSS-RuleManager-Read So zeigen Sie sich das Regelwerk im Fastlane Security Server an
FSS-RuleManager-Write Um zusätzliche Aktionen wie Hinzufügen, Aktualisieren und Löschen im Rregelwerk des Fastlane Security Servers durchzuführen
FSS-Crl Um Zugang zum Herunter-, oder Hochladen von Sperrlisten im Fastlane Security Server zu erhalten
FSS-Message Zum Schutz des Zugriffs auf Prozesse wie Ver-/Entschlüsselung/Signieren/Verifizieren auf die E-Mail-Nachrichten, AS/2-Nachrichten und AS/4-Nachrichten im Fastlane Security Server. Diese Rolle wird nur vom Server, nicht jedoch von Menschen benötigt.
FSS-SystemInfo Zeigt erweiterte Informationen über das FSS Backend in der VersionsInfo der FSS-UI an.
B2BAdmin-Dashboard So greifen Sie auf die Dashboard-Seite in der B2B-Admin-UI zu
B2BAdmin-Customizing Für Admin UI, um die Administrationsseite sichtbar zu machen
B2BAdmin-LockTables Erlaubt den Zugriff auf die LockTables (lesend & schreibend)
B2BAdmin-QueueMonitor-Read Erlaubt es die Queue zu inspizieren
B2BAdmin-QueueMonitor-Write Erlaubt es, Queue Einträge neuzustarten
B2BAdmin-CommunicationRelations-Read Erlaubt lesenden Zugriff auf die Kommunikationsbeziehungen (AS2)
B2BAdmin-CommunicationRelations-Write Erlaubt das Bearbeiten von Kommunikationsbeziehungen (AS2)
B2BAdmin-SystemInfo So erhalten Sie Zugang um Systeminformationen anzuzeigen
B2BAdmin-SystemErrors-Read Systemfehler können angezeigt werden
B2BAdmin-SystemErrors-Write Systemfehler können gelöscht werden
B2B-Errors So greifen Sie auf die Fehlerliste in der Navigationsleiste zu (für Admins interessant)
RevisionManager-Read Erlaubt lesenden Zugriff auf Revisionsdaten
RevisionManager-Write Erlaubt das Bearbeiten von Revisionsdaten
B2B-UserMessages-Read Erlaubt dem Benutzer UserMessages zu empfangen
B2B-UserMessages-MarkRead So können Usermessages als gelesen markiert werden. (Wird ab dem Dez-2020-Release nicht mehr benötigt)
B2B-UserMessages-Write Gestattet den Zugriff zur UserMessages Administration
B2B-IndexManagement Ermöglicht den Zugriff auf das IndexManagement (dieses unterstützt nur lesenden Index-Zugriff)
B2BPortal-UI Erlaubt den Zugriff auf die Portal-UI

Liste der verfügbaren Rollen in AS4

Dies sind die verfügbaren Rollen im AS4 mit ihren kurzen Beschreibungen

Rolle Description
AS4-TENANT-READ Lesender Zugriff auf die Mandanten.
AS4-TENANT-WRITE Schreibender Zugriff auf die Mandanten: erstellen, bearbeiten, löschen
AS4-PARTNER-READ Lesender Zugriff auf alle Partneradressen-Relationen
AS4-PARTNER-WRITE Schreibender Zugriff auf die Partneradressen-Relationen: erstellen, bearbeiten, löschen
AS4-PATHSWITCH-READ Lesender Zugriff auf Pathswitch Requests und Confirmations
AS4-PATHSWITCH-WRITE Erlaubt einen Pathswitch Request zu erstellen.
AS4-MESSAGE-READ Lesender Zugriff auf Business Messages und Receipts.
AS4-MESSAGE-WRITE Erlaubt Business Messages und Receipts zu löschen.
AS4-CSR-READ Erlaubt es, CSRs zu downloaden.
AS4-CSR-WRITE Erlaubt es, CSRs, Schlüsselpaare und Zertifikate zu generieren, zu erneuern oder zu sperren.
AS4-CRL-READ Erlaubt es, den Sperrlistenstatus für Zertifikate zu updaten.

Weitere Rollen

Rolle Description
FSS-CertificateManager-SMPKI-Read Diese Rolle darf im Kontext von AS4/B2B NICHT vergeben werden. Sie dient der Kompatibilität zu MBSE.

Benutzerbindung mit Rollen

Die Benutzer in keycloak können an eine bestimmte Rolle oder mehrere Rollen gebunden sein. Der Benutzer kann auf die Benutzerliste über das Menü auf der linken Seite zugreifen, wie in der Abbildung unten dargestellt.

Abbildung 1.12

Der Benutzer kann nach einem bestimmten Benutzer suchen oder auf “View all users” klicken, um Benutzer in der Tabelle anzuzeigen. Bitte sehen Sie sich den untenstehenden Screenshot an, um ein Beispiel zu sehen.

Abbildung 1.13

Der Benutzer kann auf die Schaltfläche “Edit” unter der Spalte Actions in der Benutzertabelle klicken, um eine Rolle für diesen Benutzer hinzuzufügen oder zu entfernen. Siehe Screenshot unten.

Abbildung 1.14

Rolle zum Benutzer hinzufügen: Der Benutzer kann zur Registerkarte “Role mappings” gehen (wie im Screenshot unten gezeigt) und in der Registerkarte Available Roles die Rolle auswählen, die hinzugefügt werden muss, und auf die Schaltfläche “Add selected” klicken, um sie hinzuzufügen.

Abbildung 1.15

Rolle vom Benutzer entfernen: In ähnlicher Weise kann ein Benutzer die Rolle von dem Benutzer entfernen, indem er eine Rolle in den Assigned Roles auswählt und dann auf die Schaltfläche “Remove selected” klickt. Siehe Bildschirmfoto unten.

Abbildung 1.16

Gruppen

Die verfügbaren Rollen können gruppiert werden, und es kann eine Rollengruppe erstellt werden, die einem Benutzer zugewiesen wird. Dies ist nützlich, um Zeit zu sparen, wenn die gleichen Rollen mehreren Benutzern wiederholt zugewiesen werden.

Der Benutzer kann auf die Gruppenseite über das Menü auf der linken Seite zugreifen, wie in der Abbildung unten gezeigt. Der Benutzer kann dann auf die Schaltfläche “New” klicken, um eine Gruppe mit der/den darin enthaltenen Rolle(n) zu erstellen.

Abbildung 1.17

Gruppe erstellen: Der Benutzer kann den Namen der Gruppe festlegen und auf “Save” klicken.

Abbildung 1.18

Der Benutzer wird zu diesem Bildschirm umgeleitet, wo er dann zur Registerkarte “Role Mappings” navigieren und die Rollen zur Gruppe hinzufügen kann.

Abbildung 1.19

Gruppe löschen: Der Benutzer kann jede beliebige Gruppe auf der Seite Gruppenliste löschen. Siehe Screenshot unten. Bitte beachten Sie, dass jeder Benutzer, der an diese Gruppe gebunden ist, automatisch freigegeben wird.

Abbildung 1.20

Binden der Rollengruppe an den Benutzer: Ein Benutzer kann an eine beliebige Gruppe gebunden werden, indem er auf die Seite Benutzer geht und zur Registerkarte “Groups” wechselt, um die Gruppe wie in der Abbildung unten gezeigt, einzustellen.

Abbildung 1.21

Vererbung von Rollen über Gruppenhierarchie: Rollen lassen sich über eine Gruppenhierarche vererben. Nach Anlegen mehrerer Gruppen können diese mit Cut und Paste einander zugeordnet werden. Wird ein Benutzer an eine Ebene der Gruppenhierarchie gebunden, erhält er alle Rollen aus allen übergeordneten Gruppen. Die aktiven Rollen sind im jeweiligen Benutzer unter Role Mappings in der Liste “Effective Roles” ersichtlich.

Mandanten in Keycloak

Attribute der Mandanten

Die Mandanten können in der Keycloak Benutzerkonfiguration als Attribut festgelegt werden. Die Mandantenfilterung kann verwendet werden, um den Zugriff auf Systeme einzuschränken, auf die der Benutzer zugreifen kann. Diese Filterung auf bestimmte Mandanten kann in Modulen vorgenommen werden, indem das Benutzerattribut in der keycloak Benutzerkonfiguration als Attribut eingerichtet wird.

B2B

Das im B2B zu verwendende Mandantenattribut ist tenants. Wenn das Attribut vorhanden ist, werden die Daten im Modul auf das System beschränkt, das an diesen Mandant gebunden ist. Die Zuordnung von Mandant zu System wird in den B2B Extensions vorgenommen.

Der Name der Extension lautet TENANTS und die Konfiguration erfolgt im Inhalt.

Beispielwerte der Zuordnung von Mandanten zu einem System in der Extension:

  • NETZBETREIBER=99007700000002
  • LIEFERANT=9912345678798094,9912345678798095,991234567878798096

Wie Sie oben sehen können, können einem Mandant mehrere Systeme Kommagetrennt zugeordnet werden. Die Systeme sind Komma-separiert anzugeben. (Es dürfen keine 2 Kommas direkt aufeinander folgen. Außerdem darf der Wert nicht mit einem Komma beginnen.)

Schauen wir uns nun die Anwendungsfälle an.

Mit tenants = all können Benutzer auf alle Systeme zugreifen. Wenn der Benutzer ein Attribut als Tenants = all gesetzt hat, kann er also alle Nachrichten in der B2B-UI für alle Systeme sehen. Ein Beispiel finden Sie im folgenden Screenshot.

Abbildung 2.1

In ähnlicher Weise kann das Attribut tenants auf einen einzigen Mandanten gesetzt werden, um den Datenzugriff für diesen Benutzer nur für diesen Mandanten einzuschränken.

B2B-UI: Der Datenzugriff für den Benutzer kann für Nachrichten den MPID Editor eingeschränkt werden. Beispiel für das Setzen eines Mandantenattributs: Dadurch werden die Daten im Nachrichtenmonitor auf das System beschränkt, das zu NETZBETREIBER gehört.

Abbildung 2.2

Einige Richtlinien:

  • Wenn der Benutzer keinen Mandanten zugewiesen hat, aber die Mandantenfilterung aktiv ist (die Extension TENANTS existiert), kann der Benutzer NICHTS sehen
  • Wenn (der Benutzer keinen Mandanten hat und) die Mandantenfilterung nicht aktiv ist (die Extension TENANTS existiert nicht), kann der Benutzer alles sehen
  • Wenn der Benutzer einen Mandanten hat, der nicht Teil der Extension TENANTS ist, kann der Benutzer nichts sehen.

Mandant general

Es gibt Nachrichten, die keinem Mandanten zugeschrieben werden können. Dazu gehören z.B. Jobnachrichten, dass bestimmte Jobs ausgeführt wurden.

Diese Nachrichten können dem User angezeigt werden, indem dem User zusätzlich der Mandant general zugewiesen wird.

Ein User der general Nachrichten sehen kann, kann also die Jobnachrichten ALLER Mandanten sehen, und sollte entsprechend vom Unternehmen berechtigt sein, mandantenübergreifend zu arbeiten.

Falls ILNs in der Extension TENANTS nicht gepflegt wurden, handelt es sich um eine Fehlkonfiguration der B2B. Diese fehlenden ILNs können ebenfalls von einem User mit dem general Attribute gesehen werden.

FSS

Das im FSS zu verwendende Mandantenattribut ist fss_tenants. Die Zuordnung des Clients zum System erfolgt im FSS table client.

Ähnlich wie bei B2B sind die Daten im Modul auf das System beschränkt, das an diesen Client gebunden ist, wenn das Attribut vorhanden ist. Wenn das Attribut jedoch nicht konfiguriert ist, sucht FSS nach tenants und lädt die entsprechenden Daten, die an den Client gebunden sind.

FSS-UI: Beispiel für das Setzen eines FSS-Mandantenattributs: Dadurch werden die Daten der Zertifikate und die Regeln eingeschränkt.

Abbildung 2.3

Einige Richtlinien:

  • Wenn der Benutzer die Rolle eines Administrators hat, kann er jedes Zertifikat unabhängig vom Attribut der Mandanten sehen.
  • Wenn fss_tenants vorhanden ist, wird dieses Attribut genutzt.
  • Wenn fss_tenants nicht konfiguriert ist, wird das Attribut tenants genutzt.
  • Wenn das Attribut des Mandanten undefiniert oder ungültig ist, kann der Benutzer nur “undefinierte” Zertifikate und Regeln sehen. Dies ist das Standardverhalten wenn die Mandantenfilterung nicht genutzt wird.
  • Wenn kein Attribut fss_tenants und tenants vorhanden ist, kann der Benutzer nur “undefinierte” Zertifikate und Regeln anzeigen.
  • Mit fss_tenants = all können Benutzer auf alle Systeme zugreifen.
  • Wenn fss_tenants ist nicht konfiguriert ist und tenants = all gilt, können Benutzer auf alle Systeme zugreifen.

Tenant Mapper

Der Tenant Mapper muss für jede Keycloak-Client-Applikation, welcher die Mandantenfilterung unterstützen soll, auf der Client-Konfiguration Seite eingestellt werden. Aktuell sind das insbesondere b2b-functional-ui & fss-ui.

B2B

Gehen Sie zur Seite Client und wählen Sie z.B. den Client b2b-functional-ui (analog auch für alle anderen Clients).

Gehen Sie dann zur Registerkarte Mapper und klicken Sie auf Create, wie unten im Bildschirmfoto gezeigt.

Abbildung 2.4

Fügen Sie den Mapper mit den folgenden Werten hinzu, wie in der Abbildung unten gezeigt.

Abbildung 2.5

FSS

Gehen Sie zur Seite Client und wählen Sie den Client fss-ui aus.

Gehen Sie dann zur Registerkarte Mapper und klicken Sie auf Create, wie unten im Bildschirmfoto gezeigt.

Abbildung 2.6

Fügen Sie den Mapper mit den folgenden Werten hinzu, wie in der Abbildung unten gezeigt.

Abbildung 2.7

Mandanten über Gruppen

Falls Sie die Mandanten nicht direkt den Usern, sondern Gruppen zuweisen möchten, und User mehreren Gruppen zugehörig sein sollen, ist das folgende Vorgehen anzuwenden:

Ähnlich wie Rollen können Mandantenattribute Gruppen zugewiesen werden. Das tenants Attribut gilt dann für die User mit entsprechender Gruppe. Durch diese Einstellungen werden Attribute mehrerer Gruppen aggregiert und die User sehen mehrere Mandanten.

Beispiel: der User Müller kann Nachrichten von Netz & Lief sowie allgemeine Nachrichten sehen, da er selber über das Mandantenattribut tenants=general verfügt und zusätzlich den Gruppen NETZ & LIEF zugeordnet ist, welche jeweils über die Attribute tenants=netz & tenants=lief verfügen.

Für dieses Feature müssen für jede UI im Keycloak Tenant-Mapper die Eigenschaften Multivalued und Aggregate attribute values aktiviert werden.

Tenant-Mapper

Tenant-Mapper-FSS

Clients

Clients im Keycloak sind Browser-Anwendungen oder Webdienste, die ein Login (genauer ein Token) anfordern können. Auch Applikationen, die per Keycloak abgesichert angesprochen werden, sind als Client im Keycloak zu konfigurieren. Zu jedem Client lässt sich aus Keycloak eine keycloak.json exportieren. Diese ist an geeigneter Stelle an der jeweiligen Applikation zu hinterlegen. Genauere Details folgen im Kontext der Applikationen. Manchmal müssen die Daten der keycloak.json auch in eine andere Form gebracht werden, z.B. eine application.yml.

Die derzeit konfigurierten Clients sind die neuen Mikro-Frontends und ihre jeweiligen Backends, die den keycloak.json benötigen, sind wie folgt

Client Frontend/Backend
admin-ui Microfrontend
b2b-functional-ui Microfrontend
fss-ui Microfrontend
b2b-tomcat-war Backend
fss Backend

Keycloak Konfiguration 

Die Datei keycloak.json ist die Datei, die benötigt wird, um die Konfiguration im Mikro-Front-End für die Verbindung zum keycloak-Server zur Authentifizierung und Autorisierung mit bestimmten Einstellungen vorzunehmen. Diese kann vom Keycloak-Server exportiert werden.

keycloak.json exportieren

Die Datei keycloak.json kann vom Keycloak-Server über die Clients-Seite exportiert werden. Siehe Bildschirmfoto unten. Wählen Sie den Client aus, für den Sie die Datei keycloak.json exportieren möchten.

Abbildung 2.5

Navigieren Sie zur Registerkarte Installation und wählen Sie die Format Option: Keycloak OIDC JSON. 

Abbildung 2.5

Sie können die Vorschau der Datei keycloak.json sehen, wie im Bildschirmfoto unten gezeigt. Klicken Sie auf die Download-Schaltfläche, um diese als Json-Datei zu exportieren.

Abbildung 2.5

keycloak.json importieren 

Die keycloak.json wird vom Mikro-Frontend benötigt, um eine Verbindung mit dem keycloak-Server zur Authentifizierung und Autorisierung herzustellen. Um diese Datei zu erhalten, lesen Sie bitte den Abschnitt keycloak.json exportieren in diesem Kapitel.

Sobald Sie diese Datei erhalten haben, legen Sie sie im Projektverzeichnis des Mikro-Frontends ab: microfrontend-deployment/assets/config 

The basic template for the keycloak.json file looks like this: 

{    “auth-server-url”: “https://<your keycloak server>/auth”, 

  “realm”: “<your keycloak realm>”, 

  “disableAuth”: false,

 ”resource”: “b2b-functional-ui”

} 

Anmerkung: Die bestehende Eigenschaft “disableAuth”: false in der keycloak.json sollte weiterhin beibehalten werden.

keycloak.json sollte eine Ressource (Client-ID) enthalten, die genau der auf dem keycloak-Server festgelegten entspricht. Beispiel:

 ”resource”: “b2b-functional-ui”

Wenn diese Eigenschaft nicht enthalten ist, wird auf die im Code festgelegten Standardwerte zurückgegriffen:

admin-ui

user-messages-ui

b2b-functional-ui

fss-ui

revisionInfo-ui

portal-ui

index-management-ui

View Me   Edit Me