Aufbauend auf dem vorherigen Schritt, zeigt der folgende Abschnitt, wie die Clientauthentifizierung
in einer verteilten eXtreme-Scale-Umgebung implementiert wird.
Vorbereitende Schritte
Stellen Sie sicher, dass Sie die Anweisungen im Abschnitt
Lernprogramm zur Java-SE-Sicherheit - Schritt 3 ausgeführt
haben. Sie müssen das Beispiel
SecureSimpleApp.java erstellt und in eine Datei
sec_sample.jar kompiliert und eine Konfigurationsdatei mit dem Namen
security.xml erstellt haben.
Informationen zu diesem Vorgang
Wenn die Clientauthentifizierung aktiviert ist, wird ein Client authentifiziert, bevor
eine Verbindung zum eXtreme-Scale-Server hergestellt wird.
In diesem Abschnitt wird anhand des Beispiels
SecureSimpleApp.java veranschaulicht, wie die Clientauthentifizierung
in einer eXtreme-Scale-Serverumgebung durchgeführt werden kann.
ClientberechtigungsnachweisDas Beispiel
SecureSimpleApp.java verwendet die folgenden beiden Implementierungen, um Clientberechtigungsnachweise
abzurufen:
com.ibm.websphere.objectgrid.security.plugins.builtins.UserPasswordCredential
com.ibm.websphere.objectgrid.security.plugins.builtins.UserPasswordCredentialGenerator
Weitere Informationen zu diesen Plug-ins finden Sie unter Programmierung der Clientauthentifizierung.
Serverauthentifikator
In diesem Beispiel wird eine integrierte eXtreme-Scale-Implementierung verwendet, die Implementierung
KeyStoreLoginAuthenticator, die für Test- und Beispielzwecke bestimmt ist (ein Keystore ist eine einfache Benutzerregistry und sollte nicht für eine Produktionsumgebung verwendet werden).
Weitere Informationen finden Sie im Artikel zum Authentifikator-Plug-in unter Programmierung der Clientauthentifizierung.
- Wechseln Sie in einem Befehlszeilenfenster in das Verzeichnis
WXS-Ausgangsverzeichnis.
- Wechseln Sie in das Verzeichnis WXS-Ausgangsverzeichnis/security,
das Sie in Lernprogramm zur Java-SE-Sicherheit - Schritt 3 erstellt haben.
- Erstellen Sie eine JAAS-Konfigurationsdatei, die eine Methode für die
Authentifizierung beim Server durchsetzt, og_jaas.config. Der in der Datei security.xml referenzierte KeyStoreLoginAuthenticator
verwendet einen Keystore, indem er das JAAS-Anmeldemodul "KeyStoreLogin" verwendet. Der Keystore kann als Option für die Klasse
"KeyStoreLoginModule" konfiguriert werden.
og_jaas.config
KeyStoreLogin{
com.ibm.websphere.objectgrid.security.plugins.builtins.KeyStoreLoginModule required
keyStoreFile="../security/sampleKS.jks" debug = true;
};
- Erstellen Sie einen Keystore mit dem Namen sampleKS.jks mit dem Kennwort "sampleKS1".
- Wechseln Sie in das Verzeichnis Java-Ausgangsverzeichnis/bin, und führen Sie keytool aus.
- Wechseln Sie in das Verzeichnis WXS-Ausgangsverzeichnis /security,
und erstellen Sie zwei Benutzer,
"manager" und "cashier", mit jeweils einem eigenen Kennwort.
- Verwenden Sie keytool, um einen Benutzer "manager" mit dem Kennwort "manager1"
im Keystore "sampleKS.jks" zu erstellen.
keytool -genkey -v -keystore ./sampleKS.jks -storepass sampleKS1
-alias manager -keypass manager1
-dname CN=manager,O=acme,OU=OGSample -validity 10000
- Verwenden Sie keytool, um einen Benutzer "cashier" mit dem Kennwort "cashier1"
im Keystore "sampleKS.jks" zu erstellen.
keytool -genkey -v -keystore ./sampleKS.jks -storepass sampleKS1
-alias cashier -keypass cashier1 -dname CN=cashier,O=acme,OU=OGSample
-validity 10000
- Wechseln Sie in das Verzeichnis WXS-Ausgangsverzeichnis/properties.
- Kopieren Sie die Datei sampleClient.properties.
cp ../properties/sampleClient.properties client.properties
- Speichern Sie die Datei im Verzeichnis WXS-Ausgangsverzeichnis/security
unter dem Namen client.properties.
Nehmen Sie die folgenden Änderungen in der Datei
client.properties vor:
- securityEnabled: Wenn Sie securityEnabled auf "true" (Standardwert) setzen,
wird die Clientsicherheit aktiviert, die die Authentifizierung umfasst.
- credentialAuthentication: Setzen Sie credentialAuthentication auf
"Supported" (Standardwert), d. h., der Client unterstützt die Authentifizierung von Berechtigungsnachweisen.
- transportType: Setzen Sie transportType auf TCP/IP, d. h., es wird kein
SSL verwendet.
- Kopieren Sie die Datei sampleServer.properties.
cp ../properties/sampleServer.properties server.properties
- Speichern Sie die Datei im Verzeichnis WXS-Ausgangsverzeichnis/security unter dem Namen
server.properties.
Nehmen Sie die folgenden Änderungen in der Datei
server.properties vor:
- securityEnabled: Setzen Sie das Attribut securityEnabled auf "true".
- transportType: Setzen Sie das Attribut transportType
auf "TCP/IP", d. h., es wird kein SSL verwendet.
- secureTokenManagerType: Setzen Sie das Attribut secureTokenManagerType
auf "none", damit der Manager für sichere Token nicht konfiguriert wird.
- Wechseln Sie in das Verzeichnis WXS-Ausgangsverzeichnis/bin, und setzen Sie je nach Plattform
einen der folgenden Befehle ab, um einen Katalogserver zu starten. Sie müssen die Befehlszeilenoptionen -clusterFile und -serverProps absetzen, um Sicherheitseigenschaften zu übergeben.
![[Unix]](./icons/ngunix.gif)
startOgServer.sh catalogServer -clusterSecurityFile ../security/security.xml
-serverProps ../security/server.properties -jvmArgs
-Djava.security.auth.login.config="../security/og_jaas.config"
startOgServer.bat catalogServer -clusterSecurityFile ../security/security.xml
-serverProps ../security/server.properties -jvmArgs
-Djava.security.auth.login.config="../security/og_jaas.config"
- Starten Sie einen Container-Server mit dem Namen c0 mit einem der folgenden Scripts.
Die
Servereigenschaftendatei wird mit der Option -serverProps übergeben.
![[Linux]](./icons/nglinux.gif)
startOgServer.sh c0 -objectgridFile ../xml/SimpleApp.xml
-deploymentPolicyFile ../xml/SimpleDP.xml
-catalogServiceEndPoints localhost:2809
-serverProps ../security/server.properties
-jvmArgs -Djava.security.auth.login.config="../security/og_jaas.config"
startOgServer.bat c0 -objectgridFile ../xml/SimpleApp.xml
-deploymentPolicyFile ../xml/SimpleDP.xml
-catalogServiceEndPoints localhost:2809
-serverProps ../security/server.properties
-jvmArgs -Djava.security.auth.login.config="../security/og_jaas.config"
- Nachdem der Katalogserver und der Container-Server gestartet wurden, führen Sie das Beispiel
sec_sample.jar wie folgt aus:
java -classpath ../lib/objectgrid.jar;../applib/sec_sample.jar
com.ibm.websphere.objectgrid.security.sample.guide.SecureSimpleApp
../security/client.properties manager manager1
Verwenden Sie einen Doppelpunkt (:) als Klassenpfadtrennzeichen anstelle
des im vorherigen Beispiel verwendeten Semikolons (;).
Nachdem Sie die Klasse angegeben haben, werden die folgenden Ergebnisse ausgegeben:
Der Kundenname für ID 0001 ist fName lName.
- Verifizieren Sie die Größe der Map "customer", die in das Grid
"accounting" eingefügt wurde, indem Sie das Befehlsdienstprogramm xscmd
wie folgt ausführen:
![[Unix]](./icons/ngunix.gif)
xscmd.sh -c showMapSizes -g accounting
-m customer -username manager -password manager1
xscmd.bat -c showMapSizes -g accounting
-m customer -username manager -password manager1
- Optional: Zum Stoppen der Container- oder Katalogserver können Sie
stopOgServer verwenden. Sie müssen jedoch eine Sicherheitskonfigurationsdatei angeben.
In der Beispielclienteigenschaftendatei werden die folgenden beiden Eigenschaften für die Generierung
eines Benutzer-ID/Kennwort-Berechtigungsnachweises (manager/manager1) definiert.
credentialGeneratorClass=com.ibm.websphere.objectgrid.security.plugins.builtins.UserPasswordCredentialGenerator
credentialGeneratorProps=manager manager1
Stoppen Sie den Container c0 mit dem folgenden Befehl.
![[Unix]](./icons/ngunix.gif)
stopOgServer.sh c0 -catalogServiceEndPoints
localhost:2809 -clientSecurityFile ..\security\client.properties
stopOgServer.bat c0 -catalogServiceEndPoints
localhost:2809 -clientSecurityFile ..\security\client.properties
Wenn Sie die Option -clientSecurityFile nicht angeben, wird eine Ausnahme mit der folgenden
Nachricht angezeigt:
>>
SERVER (id=39132c79, host=9.10.86.47) TRACE START:
>>
org.omg.CORBA.NO_PERMISSION: Server requires credential authentication
but there is no security context from the client. This usually happens
when the client does not pass a credential the server.
vmcid:
0x0
minor code: 0
completed:
No
Sie können den Katalogserver auch mit dem folgenden Befehl beenden.
Wenn Sie jedoch den nächsten Schritt des Lernprogramms ausführen möchten, können Sie
den Katalogserver aktiviert lassen.
![[Unix]](./icons/ngunix.gif)
stopOgServer.sh catalogServer -catalogServiceEndPoints
localhost:2809 -clientSecurityFile ..\security\client.properties
stopOgServer.bat catalogServer -catalogServiceEndPoints
localhost:2809 -clientSecurityFile ..\security\client.properties
Wenn Sie den Katalogserver
beenden, wird die folgende Nachricht angezeigt.
CWOBJ2512I: ObjectGrid-Server catalogServer
wurde gestoppt
Sie haben Ihr System jetzt erfolgreich teilweise gesichert, indem Sie die Authentifizierung aktiviert haben.
Die haben den Server für die Integration der Benutzerregistry konfiguriert, den
Client für die Bereitstellung von Clientberechtigungsnachweisen konfiguriert und die Clienteigenschaftendatei
und die XML-Clusterdatei für die Aktivierung der Authentifizierung geändert.
Wenn Sie ein ungültiges Kennwort angeben, wird eine Ausnahme angezeigt, in der Sie darauf hingewiesen werden,
dass der Benutzername oder das Kennwort nicht korrekt ist.
Weitere Einzelheiten zur Clientauthentifizierung finden Sie unter
Anwendungsclientauthentifizierung.
Nächster Schritt des Lernprogramms