Lernprogramm zur Java-SE-Sicherheit - Schritt 4

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. Clientberechtigungsnachweis

Das 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.

Vorgehensweise

  1. Wechseln Sie in einem Befehlszeilenfenster in das Verzeichnis WXS-Ausgangsverzeichnis.
  2. Wechseln Sie in das Verzeichnis WXS-Ausgangsverzeichnis/security, das Sie in Lernprogramm zur Java-SE-Sicherheit - Schritt 3 erstellt haben.
  3. 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;
    };
  4. Erstellen Sie einen Keystore mit dem Namen sampleKS.jks mit dem Kennwort "sampleKS1".
  5. Wechseln Sie in das Verzeichnis Java-Ausgangsverzeichnis/bin, und führen Sie keytool aus.
  6. Wechseln Sie in das Verzeichnis WXS-Ausgangsverzeichnis /security, und erstellen Sie zwei Benutzer, "manager" und "cashier", mit jeweils einem eigenen Kennwort.
    1. 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
    2. 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
  7. Wechseln Sie in das Verzeichnis WXS-Ausgangsverzeichnis/properties.
  8. Kopieren Sie die Datei sampleClient.properties.
    cp ../properties/sampleClient.properties client.properties
  9. 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:
    1. securityEnabled: Wenn Sie securityEnabled auf "true" (Standardwert) setzen, wird die Clientsicherheit aktiviert, die die Authentifizierung umfasst.
    2. credentialAuthentication: Setzen Sie credentialAuthentication auf "Supported" (Standardwert), d. h., der Client unterstützt die Authentifizierung von Berechtigungsnachweisen.
    3. transportType: Setzen Sie transportType auf TCP/IP, d. h., es wird kein SSL verwendet.
  10. Kopieren Sie die Datei sampleServer.properties.
    cp ../properties/sampleServer.properties server.properties
  11. 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:
    1. securityEnabled: Setzen Sie das Attribut securityEnabled auf "true".
    2. transportType: Setzen Sie das Attribut transportType auf "TCP/IP", d. h., es wird kein SSL verwendet.
    3. secureTokenManagerType: Setzen Sie das Attribut secureTokenManagerType auf "none", damit der Manager für sichere Token nicht konfiguriert wird.
  12. 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][Linux]
      startOgServer.sh catalogServer -clusterSecurityFile ../security/security.xml 
      -serverProps ../security/server.properties -jvmArgs 
      -Djava.security.auth.login.config="../security/og_jaas.config"
    • [Windows]
      startOgServer.bat catalogServer -clusterSecurityFile ../security/security.xml 
      -serverProps ../security/server.properties -jvmArgs 
      -Djava.security.auth.login.config="../security/og_jaas.config" 
  13. Starten Sie einen Container-Server mit dem Namen c0 mit einem der folgenden Scripts. Die Servereigenschaftendatei wird mit der Option -serverProps übergeben.
      • [Linux][Unix]
        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"
      • [Windows]
        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"
  14. 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

    [Linux] 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.

  15. 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][Linux] xscmd.sh -c showMapSizes -g accounting -m customer -username manager -password manager1
    • [Windows] xscmd.bat -c showMapSizes -g accounting -m customer -username manager -password manager1
  16. 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][Linux] stopOgServer.sh c0 -catalogServiceEndPoints localhost:2809 -clientSecurityFile ..\security\client.properties
    • [Windows] 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][Linux] stopOgServer.sh catalogServer -catalogServiceEndPoints localhost:2809 -clientSecurityFile ..\security\client.properties
    • [Windows] 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