Mapping von Organisationen, Rollen und Rechten

Das BPC bietet die Möglichkeit, ergänzend zu den Rechteobjekten des externen Identity Providers (IdP) den Benutzern zusätzliche Rollen und Rechte zu vergeben. Dies erfolgt über Zuordnung (Mapping) zu vorhandenen Organisationen, Rollen und Rechten. Es kann vor allem für die Vergabe von BPC-internen Applikationsrechten eingesetzt werden.

Konfigurationsparameter

IdentityProvider_Mappings : Dieser Konfigurationsparameter ermöglicht es zusätzliche Organisationen, Rollen und Rechte an bestehende Organisationen, Rollen und Rechte zu knüpfen. Es ist bei jeder Backend Connection vom Typ identity_provider zu finden.

Syntaxbeschreibung

Es handelt sich um ein JSON-Objekt mit 3-4 Basisattributen (organisations, roles, rights, users). Diese folgen jeweils dem gleichen Schema. In dem darunter liegendem Objekt gibt es für jede Organisation/Rolle/Recht (zusammengefasst folgend auch als Objekt bezeichnet) einen Eintrag mit einem Objekt, welches die Zuordnungen beschreibt.

Das Basisattribut users ist ein Spezialfall und wird intern vom BPC verwendet, um Daten abzulegen, falls der verwendete IdP dies nicht unterstützt. Kommt zum Beispiel der INUBIT als IdP zum Einsatz, dann können über die BPC Benutzerverwaltung den Benutzern Rechte zugewiesen werden. Da der INUBIT selbst aber keine Rechte speichern kann, werden diese unter dem Basisattribut users persistiert.

Wird zum Beispiel ein IdP verwendet, der die Funktionalität zur Verfügung stellt ('Keycloak' etc.) und händisch das Basisattribut users angelegt, dann wird dieses ebenfalls verwendet. D.h. diese Rollen, Rechte und Organisationen werden dann zusätzlich zu denen im IdP hinterlegten verwendet.
Vermeiden Sie diese Überschneidungen, da anderenfalls die Zuweisungen nur schwer ersichtlich sind.

Dabei können folgende Objekt-Zuordnungen gemacht werden (abweichende Angaben werden ignoriert):

Organisation

  • Organisation → weitere Organisation

  • Organisation → weitere Rollen

  • Organisation → weitere Rechte

Rolle

  • Rolle → weitere Rollen

  • Rolle → weitere Rechte

Recht

  • Recht → weitere Rechte

Wird einem Objekt ein Objekt zugeordnet, welches in dieser Konfiguration weitere Zuordnungen hat, so werden diese auch aufgelöst.

Beispiel

Folgendes Beispiel soll die Funktionsweise anschaulich gestalten.

Im Identity Provider sind folgende Nutzer mit entsprechenden Objekten angelegt:

BenutzerEins BenutzerZwei

Organisationen: Org1

Rollen: Rolle1

Rechte: Recht1

Organisationen: Org2

Rollen: Rolle2

Rechte: Recht2

Die Konfiguration für identityProvider_mappings sieht wie folgt aus:

{
  "organisations": {
    "Org1": {
      "assignedRoles": [
        "Rolle33"
      ],
      "assignedRights": [
        "Recht0815"
      ],
      "assignedOrganisations": [
        "Org111"
      ]
    },
    "Org111": {
      "assignedRoles": [
      ],
      "assignedRights": [
        "Recht111"
      ],
      "assignedOrganisations": [
      ]
    }
  },
  "roles": {
    "Rolle2": {
      "assignedRoles": [
        "Rolle22"
      ],
      "assignedRights": [
      ]
    }
  },
  "rights": {
    "Recht111": {
      "assignedRights": [
        "Recht4711"
      ]
    }
  }
}

Nach der Anmeldung sieht das erzeugte Objekt wie folgt aus. Die fetten Objekte wurden durch das Mapping hinzugefügt:

BenutzerEins BenutzerZwei

Organisationen: Org1, Org111

Rollen: Rolle1, Rolle33

Rechte: Recht1, Recht111, Recht4711

Organisationen: Org2

Rollen: Rolle2, Rolle22

Rechte: Recht2

Standardwert

{
  "organisations": {
    "Org1": {
      "assignedRoles": [
        "Role1"
      ],
      "assignedRights": [
        "Right1"
      ],
      "assignedOrganisations": [
        "Org2"
      ]
    },
    "DEFAULT": {
      "assignedRoles": [
        "Role11"
      ],
      "assignedRights": [
        "Right11"
      ],
      "assignedOrganisations": [
        "Org21"
      ]
    }
  },
  "roles": {
    "Role1": {
      "assignedRoles": [
        "Role2"
      ],
      "assignedRights": [
        "Right2"
      ]
    }
  },
  "rights": {
    "Right1": {
      "assignedRights": [
        "Right2"
      ]
    }
  }
}

Keywords: