X4 Produktdokumentation

Zugriff über den User Identity Adapter

Der Zugriff auf und die Bearbeitung von Ressourcen wie Controls und GridColumns lässt sich auch über den User Identity Adapter steuern. Dieser Adapter fungiert als Schnittstelle zwischen der Benutzeridentität, die von einem Identity Provider (IdP) bereitgestellt wird, und den Zugriffsrechten im System.

Funktionsweise

Mit dem User Identity Adapter lassen sich die Authentifizierungs- und Autorisierungsinformationen, die vom IdP (z. B. Keycloak oder einem anderen OIDC-kompatiblen System) stammen, beliebig innerhalb von ESB-Prozessen abrufen und weiterverarbeiten.

Dadurch können Zugriffsrechte innerhalb von X4 basierend auf den extern vergebenen Rollen oder Gruppen des IdP gesetzt werden.

Beispiele

In einer Web App gibt es drei Benutzer:

  • Access: Zugriff auf allgemeine Inhalte

  • CEO: Zugriff auf Inhalte, die nur für den CEO sichtbar sein sollen

  • Admin: Zugriff auf Inhalte, die nur für den Administrator sichtbar sein sollen

Die Detail Component greift auf einen Technical Process (.wrf-Datei) zu, in dem der User Identity Adapter prüft, welcher Benutzer zurzeit angemeldet ist. Das auf den Adapter folgende Mapping prüft anschließend, auf welche Component der Benutzer Zugriff hat:


image-20240625-134720.png

Die Benutzer werden in den Eigenschaften (<Properties/>) der Detail Component angegeben:

XML
<?xml version="1.0" encoding="UTF-8"?>
<DetailComponent
	xmlns="http://softproject.de/webapp/1.0" process="AccessRights/LoadUserIdentityCard.wrf">
	<Properties>
		<Property name="ACCESS" type="Complex">
		<Property name="CEO" type="Boolean"/>
		<Property name="ADMIN" type="Boolean"/>
		</Property>
	</Properties>
...
</DetailComponent>

Mapping mit Prüfung der Zugriffsrechte:

XML
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet exclude-result-prefixes="xs" version="2.0"
  xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
  <xsl:output media-type="text/xml" method="xml"/>
  <xsl:template match="/">
    <Ok>
      <ACCESS>
        <CEO>
          <xsl:choose>
            <xsl:when test="//Roles/Role = 'ceo'">true</xsl:when>
            <xsl:otherwise>false</xsl:otherwise>
          </xsl:choose>
        </CEO>
        <ADMIN>
          <xsl:choose>
            <xsl:when test="//Roles/Role = 'admin'">true</xsl:when>
            <xsl:otherwise>false</xsl:otherwise>
          </xsl:choose>
        </ADMIN>
      </ACCESS>
    </Ok>
  </xsl:template>
</xsl:stylesheet>
<!--Created by X4 Designer, Copyright © SoftProject GmbH. All rights reserved.-->