Sicherheitsüberprüfung erstellen
improve this page | report issueÜbersicht
Sicherheitsüberprüfungen sind der grundlegende serverseitige Baustein des MobileFirst-Sicherheitsframeworks. Eine Sicherheitsüberprüfung ist eine serverseitige Entität, die eine bestimmte Autorisierungslogik implementiert, z. B. für das Anfordern und Validieren von Clientberechtigungsnachweisen. Für den Schutz einer Ressource weisen Sie ihr einen Bereich zu, der null oder mehr Sicherheitsüberprüfungen zugeordnet ist. Das Sicherheitsframework stellt sicher, dass nur ein Client, der alle Sicherheitsüberprüfungen des schützenden Bereichs besteht, Zugriff auf die Ressource erhält. Sie können Sicherheitsüberprüfungen verwenden, um den Zugriff auf Ressourcen zu genehmigen, die von MobileFirst Server oder einem externen Ressourcenserver bereitgestellt werden.
Ein Adapter kann ein Ressourcenadapter (resource) sein (also Ressourcen und Inhalte bereitstellen, die an den Client gesendet werden sollen) und/oder ein Adapter für Sicherheitsüberprüfungen (SecurityCheck).
Hinweis: Sicherheitsüberprüfungen werden in Adaptern implementiert. Dennoch sind das MobileFirst-Sicherheitsframework und die Adapter-APIs voneinander getrennt und können nicht gemischt werden. Sie können daher keine Adapter-API wie die Schnittstelle
AdpatersAPI
im Code Ihrer Sicherheitsüberprüfung und keine APIs für Sicherheitsüberprüfungen im Quellcode von Adaptern verwenden.
Die Architektur des Sicherheitsframeworks ist modular und flexibel, und die Implementierung der Sicherheitsüberprüfung ist grundsätzlich nicht von einer bestimmten Ressource oder Anwendung abhängig. Sie können eine Sicherheitsüberprüfung wiederverwenden, um andere Ressourcen zu schützen, und für verschiedene Autorisierungsabläufe unterschiedliche Kombinationen von Sicherheitsüberprüfungen verwenden. Für noch mehr Flexibilität macht eine Sicherheitsprüfungsklasse Konfigurationseigenschaften zugänglich, die auf Adapterebene in der Definition der Sicherheitsüberprüfung und während der Laufzeit in der MobileFirst Operations Console angepasst werden können.
Zur Vereinfachung und Beschleunigung des
Entwicklungsprozesses stellt die Mobile Foundation Implementierungen abstrakter Basisklassen für die
Schnittstelle SecurityCheck
bereit.
Zusätzlich steht eine abstrakte Basisimplementierung der Schnittstelle
SecurityCheckConfiguration
(SecurityCheckConfigurationBase
) zur Verfügung sowie
komplementäre Beispielkonfigurationsklassen für Sicherheitsüberprüfungen für jede der bereitgestellten Basisklassen für Sicherheitsüberprüfungen. Beginnen Sie mit der
Basisimplementierung für Sicherheitsüberprüfungen (und der zugehörigen Beispielkonfiguration), die am ehesten Ihren Entwicklungsanforderungen entspricht, und modifizieren Sie die
Implementierung nach Bedarf.
Machen Sie sich mit der Vereinbarung einer Sicherheitsüberprüfung vertraut.
Voraussetzungen:
- Gehen Sie das Lernprogramm Autorisierungskonzepte durch.
- Informieren Sie sich über das Erstellen von Adaptern.
Verwendung:
Die nachfolgend beschriebenen Basisklassen für Sicherheitsüberprüfungen
sind Teil
der Java-Maven-Bibliothek MobileFirst com.ibm.mfp.security.checks.base
,
die beim Erstellen des Adapters aus dem
Maven Central Repository heruntergeladen wird. Wenn Sie die Entwicklungsschritte offline ausführen,
können Sie
die Basisklassen in der MobileFirst Operations Console über das Download-Center
auf der Registerkarte “Tools” unter Sicherheitsüberprüfungen herunterladen.
Fahren Sie mit folgenden Abschnitten fort:
- Sicherheitsüberprüfungen definieren
- Sicherheitsüberprüfungen implementieren
- Sicherheitsüberprüfungen konfigurieren
- Vordefinierte Sicherheitsüberprüfungen
- Weitere Schritte
Sicherheitsüberprüfungen definieren
Erstellen Sie einen Java- oder JavaScript-Adapter oder verwenden Sie einen vorhandenen Adapter.
Wenn ein Java-Adapter mit der Standardschablone erstellt wird, wird davon ausgegangen, dass der Adapter Ressourcen bereitstellen soll. Der Entwickler kann beschließen, Sicherheitsüberprüfungen und Ressourcen in das Adapterpaket oder in speziell dafür vorgesehene Adapter aufzunehmen.
Wenn Sie die Standardimplementierung für Ressourcen entfernen möchten,
löschen Sie die Dateien [Adaptername]Application.java und [Adaptername]Resource.java. Entfernen Sie außerdem das Element <JAXRSApplicationClass>
aus der Datei adapter.xml.
Fügen Sie zur Datei adapter.xml des Java-Adapters ein XML-Element mit der Bezeichnung securityCheckDefinition
hinzu. Beispiel:
<securityCheckDefinition name="sample" class="com.sample.sampleSecurityCheck">
<property name="successStateExpirationSec" defaultValue="60"/>
<property name="blockedStateExpirationSec" defaultValue="60"/>
<property name="maxAttempts" defaultValue="3"/>
</securityCheckDefinition>
- Das Attribut
name
gibt den Namen der Sicherheitsüberprüfung an. - Das Attribut
class
gibt die Implementierung der Java-Klasse für die Sicherheitsüberprüfung an. Sie müssen diese Klasse erstellen. - Sicherheitsüberprüfungen können mit einer Liste von
property
-Elementen weiter konfiguriert werden. - Informationen zum Definieren angepasster Eigenschaften finden Sie unter Sicherheitsüberprüfungen konfigurieren.
Wenn Sie einen Adapter mit einer Sicherheitsprüfungsdefinition erfolgreich in MobileFirst Server implementiert haben, können Sie Ihre Sicherheitsüberprüfung und die zugehörigen Konfigurationsdaten auch in der MobileFirst Operations Console unter Adapter → [Ihr Adapter] anzeigen und dort Laufzeitkonfigurationsänderungen vornehmen:
- Auf der Registerkarte Konfigurationsdateien sehen Sie die Serverkopie Ihres Adapterdeskriptors mit dem Element
<securityCheckDefinition>
, das Ihre Sicherheitsüberprüfung und deren konfigurierbare Eigenschaften definiert. Sie können die Adapterkonfiguration auch per Pull-Operation übertragen und per Push-Operation an verschiedene Server senden. - Auf der Registerkarte Sicherheitsüberprüfungen können Sie eine Liste aller Konfigurationseigenschaften sehen, die Sie in der Sicherheitsüberprüfung
zugänglich gemacht haben. Auf die Eigenschaften wird mit dem Wert des konfigurierten Attributs
displayName
oder - wenn kein Anzeigename konfiguriert ist - mit dem Wert des Attributs name verwiesen. Falls Sie in der Definition das Attribut description der Eigenschaft festgelegt haben, wird die Beschreibung ebenfalls angezeigt. Für jede Eigenschaft wird der Wert, der mit dem AttributdefaultValue
konfiguriert wurde, als aktueller Wert angezeigt. Sie können den Wert ändern, um den Standardwert aus Ihrer Sicherheitsprüfungsdefinition außer Kraft zu setzen. Sie können auch jederzeit die ursprünglichen Standardwerte aus Ihrer Sicherheitsprüfungsdefinition wiederherstellen. - Sie können auch in der MobileFirst Operations Console im Abschnitt Anwendungen eine Anwendungsversion auswählen.
Sicherheitsüberprüfungen implementieren
Erstellen Sie die Java-Klasse für die Sicherheitsüberprüfung. Die Implementierung sollte - wie unten gezeigt - eine der bereitgestellten Basisklassen erweitern. Die von Ihnen gewählte übergeordnete Klasse bestimmt die Ausgewogenheit von Anpassung und Einfachheit.
Sicherheitsüberprüfung
SecurityCheck
ist eine Java-Schnittstelle, die Methoden definiert, die für die Darstellung einer Sicherheitsüberprüfung als Minimum erforderlich sind.
Die Verantwortung für die einzelnen Szenarien liegt ganz beim Entwickler, der die Sicherheitsüberprüfung implementiert.
ExternalizableSecurityCheck
Diese abstrakte Klasse implementiert eine Basisversion der Schnittstelle für Sicherheitsüberprüfungen.
Sie ermöglicht unter anderem die Externalisierung als JSON, Inaktivitätszeitlimits und einen Ablauf-Countdown.
Durch die Bildung von Unterklassen zu dieser Klasse sind Sie hinsichtlich der Implementierung Ihrer Sicherheitsüberprüfung sehr flexibel.
Weitere Informationen enthält das Lernprogramm ExternalizableSecurityCheck.
CredentialsValidationSecurityCheck
Diese Klasse erweitert ExternalizableSecurityCheck
und implementiert die meisten Methoden dieser Klasse, um die Nutzung zu vereinfachen. Die beiden
Methoden validateCredentials
und createChallenge
müssen implementiert werden. Die Implementierung erlaubt eine begrenzte Anzahl von
Anmeldeversuchen in einem bestimmten Zeitraum. Nach diesem Zeitraum wird die Sicherheitsüberprüfung für eine konfigurierte Zeit
blockiert. Im Falle einer erfolgreichen Anmeldung bleibt die Sicherheitsüberprüfung für eine konfigurierte Zeit im Zustand “erfolgreich”. Während dieser
Zeit kann der Benutzer auf die angeforderte Ressource zugreifen.
Die Klasse CredentialsValidationSecurityCheck
ist für einfache Abläufe gedacht, um
beliebige Berechtigungsnachweise zu validieren, damit der Zugriff auf eine Ressource gewährt werden kann. Es gibt eine integrierte Funktion,
die nach einer Reihe von Versuchen den Zugriff blockiert.
Weitere Informationen enthalten die Lernprogramme zu CredentialsValidationSecurityCheck.
UserAuthenticationSecurityCheck
Diese Klasse erweitert CredentialsValidationSecurityCheck
und übernimmt daher alle zugehörigen Features. Sie ergänzt
eine Implementierung, die ein Benutzer-ID-Objekt (AuthenticatedUser
)
erstellt, das verwendet werden kann, um den derzeit angemeldeten Benutzer zu identifizieren. Außerdem gibt es eine integrierte Möglichkeit,
das Feature “Remember Me” zu aktivieren, damit die Anmeldung erinnert wird. Die drei Methoden
createUser
, validateCredentials
und createChallenge
müssen implementiert werden.
Weitere Informationen enthalten die Lernprogramme zu UserAuthenticationSecurityCheck.
Sicherheitsüberprüfungen konfigurieren
Jede Implementierungsklasse für Sicherheitsüberprüfungen kann
eine Klasse SecurityCheckConfiguration
verwenden, die für die jeweilige Sicherheitsüberprüfung verfügbare Eigenschaften definiert. Zu jeder
SecurityCheck
-Basisklasse gibt es eine passende Klasse SecurityCheckConfiguration
. Sie können Ihre eigene Implementierung
erstellen, die eine der SecurityCheckConfiguration
-Basisklassen erweitert, und sie
für Ihre angepasste Sicherheitsüberprüfung verwenden.
Die Methode createConfiguration
von
UserAuthenticationSecurityCheck
gibt beispielsweise eine Instanz von UserAuthenticationSecurityCheckConfig
zurück.
public abstract class UserAuthenticationSecurityCheck extends CredentialsValidationSecurityCheck {
@Override
public SecurityCheckConfiguration createConfiguration(Properties properties) {
return new UserAuthenticationSecurityCheckConfig(properties);
}
}
UserAuthenticationSecurityCheckConfig
aktiviert eine Eigenschaft mit der Bezeichnung
rememberMeDurationSec
und dem Standardwert 0
.
public class UserAuthenticationSecurityCheckConfig extends CredentialsValidationSecurityCheckConfig {
public int rememberMeDurationSec;
public UserAuthenticationSecurityCheckConfig(Properties properties) {
super(properties);
rememberMeDurationSec = getIntProperty("rememberMeDurationSec", properties, 0);
}
}
Diese Eigenschaften können auf verschiedenen Ebenen konfiguriert werden:
adapter.xml
In der Datei adapter.xml des Java-Adapters können Sie innerhalb von <securityCheckDefinition>
ein <property>
-Element oder mehrere solche Elemente hinzufügen.
Das Element <property>
wird mit folgenden Attributen verwendet:
- name: Name der Eigenschaft, wie er in der Konfigurationsklasse definiert ist
- defaultValue: Setzt den in der Konfigurationsklasse definierten Wert außer Kraft
- displayName: benutzerfreundlicher Anzeigename, der in der Konsole erscheint (optional)
- description: Beschreibung, die in der Konsole angezeigt wird (optional)
- type: stellt sicher, dass die Eigenschaft einen bestimmten Typ hat, z. B.
integer
,string
oderboolean
bzw. eine Liste mit gültigen Werten wietype="['1','2','3']"
(optional)
Beispiel:
<property name="maxAttempts" defaultValue="3" displayName="How many attempts are allowed?" type="integer"/>
Ein Praxisbeispiel finden Sie im Abschnitt Sicherheitsüberprüfung konfigurieren des Lernprogramms “CredentialsValidationSecurityCheck”.
MobileFirst Operations Console - Adapter
In der MobileFirst Operations Console können Sie unter [Ihr Adapter] auf der Registerkarte “Sicherheitsüberprüfung” den Wert
jeder in der Datei adapter.xml definierten Eigenschaft ändern.
Beachten Sie, dass in dieser Anzeige nur die in der Datei
adapter.xml definierten Eigenschaften erscheinen.
In der Konfigurationsklasse definierte Eigenschaften werden hier nicht automatisch angezeigt.
Sie können auch die JSON-Konfigurationsdatei des Adapters manuell bearbeiten und die erforderliche Konfiguration definieren. Senden Sie dann die Änderungen per Push-Operation zurück an MobileFirst Server.
- Navigieren Sie in eiem Befehlszeilenfenster zum Projektstammverzeichnis
und führen Sie den Befehl
mfpdev adapter pull
aus. - Öffnen Sie die Konfigurationsdatei aus dem Ordner [Projektordner]\mobilefirst.
-
Bearbeiten Sie die Datei und suchen Sie nach dem Objekt
securityCheckDefinitions
. Finden oder erstellen Sie in diesem Objekt ein Objekt, das den Namen Ihrer ausgewählten Sicherheitsüberprüfung hat. Suchen Sie in dem Sicherheitsprüfungsobjekt ein Eigenschaftenobjekt (“properties”). Fügen Sie ggf. ein solches Objekt hinzu. Fügen Sie für jede verfügbare Konfigurationseigenschaft, die Sie definieren wollen, zum Objekt properties ein Paar aus Name und Wert der Konfigurationseigenschaft hinzu. Beispiel:"securityCheckDefinitions": { "UserAuthentication": { "properties": { "maxAttempts": "4", "failureExpirationSec: "90" } } }
- Implementieren Sie die aktualisierte JSON-Konfigurationsdatei. Führen Sie dazu den Befehl
mfpdev adapter push
aus.
MobileFirst Operations Console - Anwendung
Eigenschaftswerte können auch auf der Anwendungsebene überschrieben werden.
In der MobileFirst Operations Console können Sie unter [Ihre Anwendung] auf der Registerkarte Sicherheit im Abschnitt Konfigurationen für Sicherheitsüberprüfungen die Werte modifizieren, die in den einzelnen Sicherheitsüberprüfungen verfügbar sind.
Sie können auch die JSON-Konfigurationsdatei des Adapters manuell bearbeiten und die erforderliche Konfiguration definieren. Senden Sie dann die Änderungen per Push-Operation zurück an MobileFirst Server.
- Navigieren Sie in eiem Befehlszeilenfenster zum Projektstammverzeichnis
und führen Sie den Befehl
mfpdev app pull
aus. - Öffnen Sie die Konfigurationsdatei aus dem Ordner [Projektordner]\mobilefirst.
-
Bearbeiten Sie die Datei und suchen Sie nach dem Objekt
securityCheckConfigurations
. Finden oder erstellen Sie in diesem Objekt ein Objekt, das den Namen Ihrer ausgewählten Sicherheitsüberprüfung hat. Fügen Sie innerhalb des Sicherheitsprüfungsobjekts für jede verfügbare Konfigurationseigenschaft, die Sie konfigurieren möchten, ein Paar aus Eingeschaftsname und -wert hinzu. Beispiel:"SecurityCheckConfigurations": { "UserAuthentication": { "properties": { "maxAttempts": "2", "failureExpirationSec: "60" } } }
- Implementieren Sie die aktualisierte JSON-Konfigurationsdatei. Führen Sie dazu den Befehl
mfpdev app push
aus.
Vordefinierte Sicherheitsüberprüfungen
Die folgenden vordefinierten Sicherheitsüberprüfungen sind ebenfalls verfügbar:
Weitere Schritte
Informieren Sie sich anhand der folgenden Lernprogramme intensiver über Sicherheitsüberprüfungen.
Vergessen Sie nicht, Ihren Adapter zu implementieren, wenn Sie die Entwicklung abgeschlossen oder Ihre Änderungen vorgenommen haben.
- Implementieren Sie CredentialsValidationSecurityCheck.
- Implementieren Sie UserAuthenticationSecurityCheck.
- Informieren Sie sich über weitere Mobile Foundation Authentifizierungs- und Sicherheitsfeatures.
Inclusive terminology note: The Mobile First Platform team is making changes to support the IBM® initiative to replace racially biased and other discriminatory language in our code and content with more inclusive language. While IBM values the use of inclusive language, terms that are outside of IBM's direct influence are sometimes required for the sake of maintaining user understanding. As other industry leaders join IBM in embracing the use of inclusive language, IBM will continue to update the documentation to reflect those changes.