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.
Dieser Konfigurationsparameter wird auch für folgende Funktionalitäten verwendet: |
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 Wird zum Beispiel ein IdP verwendet, der die Funktionalität zur Verfügung stellt ('Keycloak' etc.) und händisch das Basisattribut |
Dabei können folgende Objekt-Zuordnungen gemacht werden (abweichende Angaben werden ignoriert):
Organisation |
|
Rolle |
|
Recht |
|
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"
]
}
}
}