Sicherheitsprüfungsvertrag

Hier können Sie sich über den MobileFirst-Sicherheitsprüfungsvertrag informieren, der über die Schnittstellen SecurityCheck und SecurityCheckConfiguration definiert wird.

Übersicht

Jede Sicherheitsüberprüfung muss die Schnittstelle com.ibm.mfp.server.security.external.SecurityCheck implementieren. Diese Schnittstelle begründet den Basisvertrag zwischen der Sicherheitsüberprüfung und dem MobileFirst-Sicherheitsframework. Angepasste Sicherheitsüberprüfungen werden als eine Java™-Klasse für Sicherheitsüberprüfungen in einem MobileFirst-Adapter implementiert (siehe Implementierung von Sicherheitsüberprüfungen). Die Implementierung von Sicherheitsüberprüfungen muss folgende Voraussetzungen erfüllen:
  • Funktionen: Die Sicherheitsüberprüfung muss die Funktionen für Clientberechtigungen und Introspektion bereitstellen (siehe Funktionen von Sicherheitsüberprüfungen).
  • Zustandsmanagement: Die Sicherheitsüberprüfung muss ihren Zustand verwalten, einschließlich der Erstellung, der Löschung und des aktuellen Zustands (siehe Zustandsverwaltung für Sicherheitsüberprüfungen).
  • Konfiguration: Die Sicherheitsüberprüfung muss ein Konfigurationsobjekt für Sicherheitsüberprüfungen erstellen, in dem die utnerstützten Konfigurationseigenschaften für Sicherheitsüberprüfungen definiert sind und das bei Anpassungen der Basiskonfiguration Typen und Werte validiert (siehe Konfiguration von Sicherheitsüberprüfungen).
Vollständige Informationen zur Schnittstelle für Sicherheitsüberprüfungen finden Sie unter SecurityCheck. Sehen Sie sich auch die Implementierung und Dokumentation der bereitgestellten abstrakten Basisklassen für Sicherheitsüberprüfungen an. Über diese Klassen werden einige der Anforderungen des Sicherheitsprüfungsvertrags implementiert, z. B. die Zustandsverwaltung. Die Klassen veranschaulichen die Implementierung weiterer angepasster Funktionen (siehe Basis- und Beispielklassen für Sicherheitsüberprüfungen).

Funktionen von Sicherheitsüberprüfungen

Eine Sicherheitsüberprüfung stellt zwei Hauptfunktionen für das Sicherheitsframework bereit:

Autorisierung
Das Framework verwendet die Methode SecurityCheck.authorize, um Clientanforderungen zu autorisieren. Wenn die Clientanforderungen auf einen bestimmten OAuth-Bereich zugreifen, ordnet das Framework die Bereichselemente Sicherheitsüberprüfungen zu (siehe OAuth-Bereiche und Sicherheitsüberprüfungen). Für jede Sicherheitsüberprüfung im Bereich ruft das Framework die Methode authorize auf, um die Autorisierung für einen Bereich anzufordern, der die dieser Sicherheitsüberprüfung zugeordneten Bereichselemente enthält. Der Bereich wird mit dem Parameter scope der Methode angegeben. Die Sicherheitsüberprüfung fügt ihre Antwort zum AuthorizationResponse-Objekt hinzu, das mit dem Parameter response and die Sicherheitsüberprüfung übergeben wurde. Die Antwort enthält den Namen der Sicherheitsüberprüfung und den Antworttyp, der "success", "failure" oder "challenge" sein kann (siehe AuthorizationResponse.ResponseType). Wenn die Antwort ein Abfrageobjekt (challenge) enthält oder angepasste Erfolgs- bzw. Fehlerdaten (success, failure), übergibt das Framework die Daten in einem JSON-Objekt an den Client-Abfrage-Handler für Sicherheitsüberprüfungen. Bei einem Erfolg (success) enthält die Antwort auch den (im Parameter scope definierten) Bereich, für den die Autorisierung angefordert wurde, und die Ablaufzeit für die gewährte Autorisierung. Die Methode authorize der Sicherheitsüberprüfungen für jeden Bereich müssen "success" zurückgeben, damit dem Client der Zugriff auf den angeforderten Bereich gewährt wird. Außerdem muss jede Ablaufzeit nach dem aktuellen Datum liegen.
Introspektion
Das Framework verwendet die Methode SecurityCheck.introspect, um Introspektionsdaten für einen Ressourcenserver abzurufen. Diese Methode wird für jede Sicherheitsüberprüfung aufgerufen, die in dem Bereich, für den Introspektion angefordert wurde, enthalten ist. Wie die Methode authorize empfängt die Methode introspect einen Parameter scope mit den Bereichselementen, die dieser Sicherheitsüberprüfung zugeordnet sind. Vor der Rückgabe der Introspektionsdaten überprüft die Methode, ob der aktuelle Zustand der Sicherheitsüberprüfung noch die zuvor für diesen Bereich gewährte Autorisierung unterstützt. Wenn die Autorisierung noch gültig ist, fügt die Methode introspect ihre Antwort zum IntrospectionResponse-Objekt hinzu, das mit dem Parameter response an die Methode übergeben wurde. Die Antwort enthält den Namen der Sicherheitsüberprüfung, den (im Parameter scope definierten) Bereich, für den die Autorisierung angefordert wurde, die Ablaufzeit für die gewährte Autorisierung und die angeforderten angepassten Introspektionsdaten. Wenn die Autorisierung nicht mehr erteilt werden kann (weil beispeilsweise der Ablaufzeitpunkt für einen zuvor erfolgreichen Zustand erreicht ist) kehrt die Methode zurück, ohne eine Antwort hinzuzufügen.
Anmerkung:
  • Das Sicherheitsframework stellt die Verarbeitungsergebnisse der Sicherheitsüberprüfungen zusammen und übergibt relevante Daten an den Client. Die Frameworkverarbeitung hat keinerlei Kenntnis von den Zuständen der Sicherheitsüberprüfungen.
  • Aufrufe der Methode authorize oder introspect können zu einer Änderung des aktuellen Zustands der Sicherheitsüberprüfung führen, auch wenn der Ablaufzeitpunkt für den aktuellen Zustand noch nicht erreicht ist.

Zustandsverwaltung für Sicherheitsüberprüfungen

Sicherheitsüberprüfungen sind zustandsabhängig, sodass eine Sicherheitsüberprüfung für die Verfolgung und Beibehaltung ihres Interaktionszustands verantwortlich ist. Bei jeder Autorisierungs- oder Introspektionsanforderung empfängt das Sicherheitsframework den Zustand der relevanten Sicherheitsüberprüfungen aus einem externen Speicher (in der Regel einem verteilten Cache). Am Ende der Anforderungsverarbeitung speichert das Framework den Zustand der Sicherheitsüberprüfung wieder in dem externen Speicher.

Der Sicherheitsprüfungsvertrag erfordert Folgendes:
  • Eine Sicherheitsüberprüfung implementiert die Schnittstelle java.io.Externalizable. Sie verwaltet mit dieser Schnittstelle die Serialisierung und Deserialisierung ihres Zustands.
  • Eine Sicherheitsüberprüfung definiert eine Ablaufzeit und ein Inaktivitätszeitlimit für ihren aktuellen Zustand. Der Zustand der Sicherheitsüberprüfung ist eine Stufe im Autorisierungsprozess und kann nicht unendlich andauern. Die konkreten Zeiträume für die Gültigkeit des Zustands und für die maximale Inaktivität werden in der Implementierung der Sicherheitsüberprüfung gemäß der implementierten Logik festgelegt. Die Sicherheitsüberprüfung informiert das Framework über die Implementierung der Methoden getExpiresAt und getInactivityTimeoutSec der Schnittstelle SecurityCheck über die gewählten Werte für Ablaufzeit und Inaktivitätszeitlimit.

Konfiguration von Sicherheitsüberprüfungen

Eine Sicherheitsüberprüfung kann Konfigurationseigenschaften zugänglich machen, deren Werte auf der Adapterebene und auf der Anwendungsebene angepasst sein können. Die Sicherheitsprüfungsdefinition für eine bestimmte Klasse legt fest, welche der unterstützten Konfigurationseigenschaften dieser Klasse zugänglich gemacht werden sollen, und kann die in der Klassendefinition festgelegten Standardwerte anpassen (siehe Sicherheitsüberprüfungen definieren). Die Eigenschaftswerte können dynamisch weiter angepasst werden. Dies gilt für den Adapter, der die Sicherheitsüberprüfungen definiert, und für jede Anwendung, die die Überprüfung verwendet (siehe Konfiguration von Sicherheitsüberprüfungen). Eine Sicherheitsprüfungsklasse macht ihre unterstützten Eigenschaften zugänglich, indem sie eine Methode createConfiguration implementiert. Diese Methode erstellt eine Instanz einer Klasse für Sicherheitsprüfungskonfigurationen, die die Schnittstelle com.ibm.mfp.server.security.external.SecurityCheckConfiguration implementiert. Diese Schnittstelle ergänzt die Schnittstelle SecurityCheck und ist auch Teil des Sicherheitsprüfungsvertrags. Die Sicherheitsüberprüfung kann ein Konfigurationsobjekt erstellen, das keine Eigenschaften zugänglich macht. Die Methode createConfiguration muss jedoch ein gültiges Konfigurationsobjekt zurückgeben und kann nicht null zurückgeben. Vollständige Informationen zur Schnittstelle für Sicherheitsprüfungskonfigurationen finden Sie unter SecurityCheckConfiguration. Sehen Sie sich auch die Implementierung und Dokumentation der bereitgestellten abstrakten Basisklasse für Sicherheitsüberprüfungen und die Beispielimplementierungen der Klasse für Konfigurationen an (siehe Basis- und Beispielklassen für Sicherheitsüberprüfungen).

Das Sicherheitsframework ruft die Methode createConfiguration der Sicherheitsüberprüfung während der Implementierung auf, was bei jeder Konfigurationsänderung für einen Adapter oder eine Anwendung der Fall ist. Der Methodenparameter properties enthält die Eigenschaften, die in der Sicherheitsprüfungsdefinition des Adapters festgelegt sind, sowie deren aktuelle angepasste Werte (oder die Standardwerte, wenn keine Anpassung erfolgte). Die Implementierung der Sicherheitsprüfungskonfiguration sollte die Werte der empfangenen Eigenschaften validieren und Methoden für das Zurückgeben der Validierungsergebnisse bereitstellen. Die Sicherheitsprüfungskonfiguration muss die Methoden getErrors, getSyswarnings und getInfo implementieren. Die abstrakte Klasse für Sicherheitsprüfungskonfigurationen SecurityCheckConfigurationBase definiert und implementiert außerdem die angepssten Methoden getStringProperty, getIntProperty und addMessage. Einzelheiten finden Sie in der Codebeschreibung zu dieser Klasse.
Anmerkung: Die Namen und Werte der Konfigurationseigenschaften in der Sicherheitsprüfungsdefinition und in jeder Adapter- oder Anwendungsanpassung müssen mit den unterstützten Eigenschaften und zulässigen Werten der Konfigurationsklasse übereinstimmen.