Ansicht
Dokumentation

ABENBDL_AUTHORIZATION - BDL AUTHORIZATION

ABENBDL_AUTHORIZATION - BDL AUTHORIZATION

SUBST_MERGE_LIST - merge external lists to one complete list with #if... logic for R3up   General Material Data  
Diese Dokumentation steht unter dem Copyright der SAP AG.
SAP E-Book

- authorization

Deklaration auf Entitätsebene

... authorization master ${( global )
                         $|( instance )
                         $|( global, instance )$}
  $| authorization dependent by _Assoc ...


RAP-BO-Operationszusätze, Deklaration im Entitätsverhaltensrumpf

... authorization:none

... authorization:update

Varianten:

1. ... authorization master (  )

2. ... authorization dependent by _Assoc

3. ... authorization:none

4. ... authorization:update

Wirkung

Die Berechtigungssteuerung im RAP schützt Business-Objekte gegen unberechtigte Zugriffe auf Daten. Die Berechtigungssteuerung wird separat für jede Entitätsverhaltensdefinition in den Entitätsverhaltensmerkmalen definiert und muss im ABAP-Behavior-Pool implementiert werden. Im ABAP-Behavior-Pool gibt es unterschiedliche Methoden für die Implementierung von globalen und instanzbasierten Berechtigungen.

Folgende Varianten stehen zur Verfügung:

  • global
  • Hiermit wird der Zugriff auf Daten oder die Ausführungsberechtigung für bestimmte Operation für ein vollständiges RAP-BO unabhängig von individuellen Instanzen, beispielsweise Benutzerrollen, eingeschränkt.

  • instance
  • Berechtigungsprüfung, die vom Zustand einer Entitätsinstanz abhängig ist.

  • global, instanzbasiert
  • Globale und instanzbasierte Berechtigungssteuerungen können miteinander kombiniert werden. In diesem Fall werden instanzbasierte Operationen in der globalen und in der instanzbasierten Berechtigungsprüfung überprüft. Es müssen beide RAP-Behandlermethoden, FOR GLOBAL AUTHORIZATION und FOR INSTANCE AUTHORIZATION, implementiert werden. Diese Prüfungen finden zu unterschiedlichen Zeiten während der Laufzeit statt.

authorization master und authorization dependent werden auf Entitätsebene separat für jede Entitätsverhaltensdefinition in den Entitätsverhaltensmerkmalen definiert. Zur Zeit können nur Wurzelentitäten Master-Berechtigungsentitäten sein. Falls eine Wurzelentität als Berechtigungs-Master-Entität definiert ist, sollte jede verhaltensfähige untergeordnete Entität als berechtigungsabhängige Entität definiert werden.

Berechtigungsprüfungen müssen im ABAP-Behavior-Pool implementiert werden. Dies kann beispielsweise über Berechtigungsobjekte erfolgen.

Verwaltetes RAP-BO

In einem verwalteten RAP-BO und wenn die Wurzelentität als authorization master angegeben ist, prüft das RAP-Framework jede RAP-BO-Operation für Zugriffseinschränkungen.

Nicht verwaltetes RAP-BO

In einem nicht verwalteten RAP-BO und wenn die globale Berechtigungssteuerung angegeben ist, prüft das RAP-Framework jede RAP-BO-Operation auf Zugriffseinschränkungen.

Wenn die instanzbasierte Berechtigungssteuerung angegeben ist, ist dies nicht der Fall. Das RAP-Framework ruft keine Methode für instanzbasierte Berechtigung in nicht verwalteten Nicht-Entwurfs-Szenarien auf. Wenn die Berechtigungssteuerung relevant ist, muss sie für jede modifizierende Operation in der jeweiligen Methode implementiert werden. Nur in UI-Szenarien beeinflusst die Methode der instanzbasierten Berechtigungssteuerung die RAP-Consumer-Hinweise.

Entwurfsfähige RAP-BO

In einem entwurfsfähigen RAP-BO prüft das RAP-Framework jede Standardoperation einer Entwurfsinstanz auf Zugriffseinschränkungen. Für die Entwurfsaktionen Resume und Edit wird die Berechtigungssteuerung für create geprüft. Für die Entwurfsaktionen Activate, Discard und Prepare werden die Berechtigungsmethoden nicht aufgerufen. Um die Aktivierung einer Entwurfsinstanz zu verhindern, muss die Berechtigungsprüfung in einer Validierung implementiert werden.

Projektions-BO

In einem Projektions-Business-Objekt wird die Berechtigung des Basis-Business-Objektes automatisch geerbt. Wenn neue Aktionen oder Funktionen in der Projektionsschicht definiert sind, kann eine neue Berechtigungssteuerung für diese Aktionen und Funktionen definiert werden. Weitere Informationen finden Sie unter CDS BDL - use, Projektions-BDEF.

  • Entwicklungsleitfaden für das ABAP-RESTful-Anwendungsprogrammiermodell, Abschnitt Authorization Control.

Hinweise

  • Wenn der strikte BDEF-Modus eingeschaltet ist, ist die Markierung von jeder Entität als entweder authorization master oder authorization dependent obligatorisch.
  • Mit der EML-Anweisung IN LOCAL MODE kann die Berechtigungssteuerung übersprungen werden.
  • Auch in anderen ABP-Methoden können Berechtigungen überprüft werden, beispielsweise in Validierungen.
  • In UI-Szenarien wird die Berechtigungssteuerung als RAP-Consumer-Hinweis dargestellt.

Beispiel - Verwaltet, Instanzberechtigung

Im folgenden Beispiel wird eine auf der CDS-Wurzel-View-Entität DEMO_RAP_MANAGED_AUTHORIZATION basierte verwaltete BDEF gezeigt. Die Wurzelentität wird als Berechtigungs-Master für die instanzbasierte Berechtigungssteuerung definiert.

Mit der Implementierung im ABAP-Behavior-Pool wird angegeben, dass Löschoperationen beim Wert B im Feld DataFieldRoot einer Instanz nicht erlaubt sind.

Das Programm DEMO_RAP_MANAGED_AUTHORIZATION greift über EML auf das Business-Objekt zu und führt die folgenden Schritte aus:

  • Hiermit werden zwei Instanzen der Wurzelentität angelegt. Eine hat den Wert B im Feld DataFieldRoot und daher erlaubt die instanzbasierte Berechtigungssteuerung das Löschen dieser Instanz nicht.
  • Sie versucht beide Entitätsinstanzen zu löschen. Bei einer Instanz ist die Löschoperation erfolgreich. Bei der zweiten Entitätsinstanz verhindert die Berechtigungsprüfung die Löschoperation. Es wird eine Fehlermeldung zurückgegeben.

Ergebnis: Bei einer Entitätsinstanz schlägt die Löschoperation fehl. Es wird eine Fehlermeldung zurückgegeben.

IMAGE @@ABDOC_AUTH1.jpg@@394@@361@@

Beispiel - Nicht verwaltet, globale Berechtigung

Im folgenden Beispiel wird eine auf der CDS-Wurzel-View-Entität DEMO_RAP_UNMANAGED_AUTH basierte nicht verwaltete BDEF gezeigt. Die übergeordnete Entität wird als Master-Berechtigung für die globale Berechtigungssteuerung und die untergeordnete Entität als berechtigungsabhängige Entität definiert.

Mit der Implementierung im ABAP-Behavior-Pool wird angegeben, dass Aktualisierungsanforderungen generell berechtigt sind und Löschanforderungen generell nicht berechtigt sind.
Dieses ist ein vereinfachtes Beispiel. Eine realistische Implementierung erfordert ein benutzerabhängiges Berechtigungskonzept, beispielsweise auf Berechtigungsobjekten basierend.

Das Programm DEMO_RAP_UNMANAGED_AUTH greift über EML auf das Business-Objekt zu und führt die folgenden Aktionen aus:

  • Er legt drei Instanzen der übergeordneten Entität und zwei Instanzen der untergeordneten Entität an. Dies ist erlaubt, da keine Berechtigungseinschränkungen für die anlegende Operation implementiert sind.
  • Er aktualisiert zwei der Instanzen der übergeordneten Entität. Dies ist erlaubt, da die Berechtigungsprüfung erfolgreich ist.
  • Er versucht, eine Instanz der übergeordneten Entität zu löschen. Da Löschoperationen nicht erlaubt sind, ist dies durch die Berechtigungsprüfung verhindert. Es wird eine Fehlermeldung zurückgegeben.
  • Er löscht eine Instanz der untergeordneten Entität. Diese Anforderung wird auf die Berechtigungs-Master-Entität geleitet und wird als Aktualisierungsanforderung der Berechtigungs-Master-Entität interpretiert. Die Berechtigungsprüfung ist erfolgreich und die Instanz der untergeordneten Entität wird gelöscht.

Weitere Informationen über das Beispiel oben finden Sie im ausführbaren Beispiel CDS BDL - Globale Berechtigung.

Variante 1

... authorization master( )


Wirkung

Hiermit wird eine Entität als Berechtigungs-Master-Entität deklariert. Zur Zeit nur für Wurzelknoten verfügbar. Eine Entität ist als Master-Berechtigung definiert, wenn die Operationen dieser Entität eine eigene Berechtigungsimplementierung haben. Folglich muss in der Verhaltensimplementierung dieser Entität die Berechtigungssteuerung in der entsprechenden Methode für Berechtigungen (global oder instanzbasiert) implementiert sein.

Variante 2

... authorization dependent by _Assoc


Wirkung

Hiermit wird eine Entität als berechtigungsabhängig definiert. Modifizierende Anforderungen für diese Entitäten werden auf die Master-Berechtigungsentität geleitet. Bei aktualisierenden, löschenden und create-by-association-Operationen auf einer berechtigungsabhängigen Entität wird die Berechtigungsprüfung für eine Aktualisierung der Berechtigungs-Master-Entität angewandt.

In den folgenden Fällen muss die Berechtigungssteuerung in separaten Methoden für Berechtigung im Behavior-Pool der berechtigungsabhängigen Entität implementiert werden:

  • Aktionen von berechtigungsabhängigen Entitäten
  • anlegefähige Assoziationen, die keine Kompositionen sind

Wenn die Berechtigungs-Master-Entität keine übergeordneten Entität der berechtigungsabhängigen Entität ist, muss die Assoziation zur Berechtigungs-Master-Entität in der Entitätsverhaltensdefinition über die Syntax association _AssocToAuthMaster { } explizit definiert werden.

Mit folgender kurzer Syntaxform wird eine Zusammenfassung der Sperrabhängigkeit, ETag-Abhängigkeit und Berechtigungsabhängigkeit angeboten:

($[lock$]$[, authorization$]$[, etag$]) dependent by _assoc

Weitere Details sind im Thema syntax_short_form enthalten.

Variante 3

... authorization:none


Wirkung

Kann als RAP-BO-Operationszusatz verwendet werden, um die jeweilige Operation aus den Berechtigungsprüfungen auszuschließen. Siehe CDS BDL - authorization:none.

Variante 4

... authorization:update


Wirkung

Kann als RAP-BO-Operationszusatz verwendet werden, um die Berechtigungsprüfung zu delegieren. Eine als authorization:update angegebene Operation hat dieselbe Berechtigungssteuerung, die für die Update-Operation definiert ist. Siehe CDS BDL - authorization:update.






BAL_S_LOG - Application Log: Log header data   TXBHW - Original Tax Base Amount in Local Currency  
Diese Dokumentation steht unter dem Copyright der SAP AG.

Length: 21661 Date: 20240523 Time: 161859     sap01-206 ( 242 ms )