X4 Produktdokumentation

Zugriff über den User Identity Adapter

Mit dem User Identity Adapter lässt sich der Zugriff und die Bearbeitung von Controls und GridColumns über in Keycloak gespeicherte Benutzer beschränken.

Beispiele:

In einer Web App gibt es drei Keycloak-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 Keycloak-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.-->