Sicherheitsprüfungsvertrag
Hier können Sie sich über den MobileFirst-Sicherheitsprüfungsvertrag informieren, der über die Schnittstellen SecurityCheck und SecurityCheckConfiguration definiert wird.
Übersicht
- 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).
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.
- 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.
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).