Tutoriel sur la sécurité Java SE - Etape 4

Une fois les étapes précédentes effectuées, la rubrique suivante illustre l'implémentation d'une authentification client dans un environnement eXtreme Scale réparti.

Avant de commencer

Vous devez avoir effectué l'étape Tutoriel sur la sécurité Java SE - Etape 3. Vous devez avoir créé et compilé l'exemple SecureSimpleApp.java dans un fichier sec_sample.jar, et avoir créé un fichier de configuration appelé security.xml.

Pourquoi et quand exécuter cette tâche

Une fois l'authentification client activée, un client est authentifié avant de se connecter au serveur eXtreme Scale. Cette section illustre comment activer l'authentification client dans un environnement de serveur eXtreme Scale à l'aide de l'exemple SecureSimpleApp.java.Données d'identification client

L'exemple SecureSimpleApp.java utilise les deux implémentations de plug-in suivantes pour obtenir les données d'identification client :

com.ibm.websphere.objectgrid.security.plugins.builtins.UserPasswordCredential
com.ibm.websphere.objectgrid.security.plugins.builtins.UserPasswordCredentialGenerator 

Pour plus d'informations sur ces plug-in, voir Programmation de l'authentification de client.

Authentificateur de serveur

Cet exemple utilise une implémentation pré-intégrée dans eXtreme Scale : KeyStoreLoginAuthenticator, qui n'est là qu'à des fins de test et qu'à titre d'exemple (un fichier de clés est un registre simple d'utilisateurs, qui ne doit pas être utilisé dans le cadre d'un environnement de production). Pour plus d'informations, consultez la rubrique relative au plug-in Authenticator Programmation de l'authentification de client.

Procédure

  1. Dans une fenêtre de ligne de commande, accédez au répertoire rép_base_wxs.
  2. Accédez au répertoire rép_base_wxs/security que vous avez créé dans Tutoriel sur la sécurité Java SE - Etape 3.
  3. Créez un fichier de configuration JAAS qui impose une méthode d'authentification au serveur, og_jaas.config. L'élément KeyStoreLoginAuthenticator référencé dans le fichier security.xml utilise un fichier de clés via le module de connexion JAAS "KeyStoreLogin". Le fichier de clés peut être configuré comme une option de la classe KeyStoreLoginModule.
    og_jaas.config
    KeyStoreLogin{
    com.ibm.websphere.objectgrid.security.plugins.builtins.KeyStoreLoginModule required
         keyStoreFile="../security/sampleKS.jks" debug = true;
    };
  4. Créez un fichier de clés sampleKS.jks avec le mot de passe sampleKS1.
  5. Accédez au répertoire rép_base_java/bin et exécutez l'outil de clé.
  6. Accédez au répertoire rép_base_wxs /security et créez deux utilisateurs, "manager" et "cashier", possédant leurs propres mots de passe.
    1. Utilisez l'outil de clé pour créer un utilisateur "manager" avec le mot de passe "manager1" dans le fichier de clés sampleKS.jks.
      keytool -genkey -v -keystore ./sampleKS.jks -storepass sampleKS1 
      -alias manager -keypass manager1 
      -dname CN=manager,O=acme,OU=OGSample -validity 10000
    2. Utilisez l'outil de clé pour créer un utilisateur "cashier" avec le mot de passe "cashier1" dans le fichier de clés sampleKS.jks.
      keytool -genkey -v -keystore ./sampleKS.jks -storepass sampleKS1 
      -alias cashier -keypass cashier1 -dname CN=cashier,O=acme,OU=OGSample 
      -validity 10000
  7. Accédez au répertoire rép_base_wxs/properties.
  8. Copiez le fichier sampleClient.properties.
    cp ../properties/sampleClient.properties client.properties
  9. Dans le répertoire rép_base_wxs/security, enregistrez ce fichier sous le nom client.properties.
    Effectuez les modifications suivantes dans le fichier client.properties :
    1. securityEnabled : définissez securityEnabled sur true (valeur par défaut) ; cela active la sécurité client, ce qui inclut l'authentification.
    2. credentialAuthentication : définissez credentialAuthentication sur Supported (valeur par défaut) ; cela signifie que le client prend en charge l'authentification des données d'identification.
    3. transportType : définissez transportType sur TCP/IP, ce qui signifie qu'aucune couche Secure Sockets Layer (SSL) ne sera utilisée.
  10. Copiez le fichier sampleServer.properties.
    cp ../properties/sampleServer.properties server.properties
  11. Dans le répertoire rép_base_wxs/security, enregistrez ce fichier sous le nom server.properties
    Effectuez les modifications suivantes dans le fichier server.properties :
    1. securityEnabled : définissez l'attribut securityEnabled sur true.
    2. transportType : définissez l'attribut transportType sur TCP/IP, ce qui signifie qu'aucune couche Secure Sockets Layer ne sera utilisée.
    3. secureTokenManagerType : définissez l'attribut secureTokenManagerTypesur sur none pour ne pas configurer le gestionnaire des jetons sécurisés.
  12. Accédez au répertoire rép_base_wxs/bin et, selon la plateforme utilisée, exécutez l'une des commandes suivantes pour démarrer un serveur de catalogue. Vous devez exécuter les options de ligne de commande -clusterFile et -serverProps pour indiquer les propriétés de sécurité :
    • [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. Démarrez un serveur de conteneur appelé c0 avec l'un des scripts ci-dessous. Le fichier de propriétés du serveur est indiqué par le biais de l'option -serverProps.
      • [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. Une fois le serveur de catalogue et le serveur de conteneur démarrés, exécutez l'exemple de fichier sec_sample.jar comme suit :
    java -classpath ../lib/objectgrid.jar;../applib/sec_sample.jar
    		com.ibm.websphere.objectgrid.security.sample.guide.SecureSimpleApp
    		../security/client.properties manager manager1

    [Linux] Utilisez le signe deux-points (:) pour le séparateur de chemins d'accès aux classes au lieu du point-virgule (;) comme dans l'exemple précédent.

    Une fois la classe publiée, la sortie est la suivante :

    Le nom du client pour ID 0001 est fName lName.

  15. Vérifiez la taille de la mappe Customer insérée dans la grille Accounting, en exécutant l'utilitaire de commande xscmd comme suit :
    • [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. Facultatif : pour arrêter les serveurs de conteneur ou de catalogue, vous pouvez utiliser stopOgServer. Il est néanmoins nécessaire de fournir un fichier de configuration des paramètres de sécurité. L'exemple de fichier de propriétés du client définit les deux propriétés suivantes pour générer un ID d'utilisateur et un mot de passe (manager/manager1).
    credentialGeneratorClass=com.ibm.websphere.objectgrid.security.plugins.builtins.UserPasswordCredentialGenerator 
    credentialGeneratorProps=manager manager1

    Arrêtez le conteneur c0 à l'aide de la commande suivante :

    • [Unix][Linux] stopOgServer.sh c0 -catalogServiceEndPoints localhost:2809 -clientSecurityFile ..\security\client.properties
    • [Windows] stopOgServer.bat c0 -catalogServiceEndPoints localhost:2809 -clientSecurityFile ..\security\client.properties

    Si vous ne définissez pas l'option -clientSecurityFile, l'exception suivante se produit avec le message suivant.

    >> SERVER (id=39132c79, host=9.10.86.47) TRACE START:

    >> org.omg.CORBA.NO_PERMISSION : le serveur requiert une authentification par données d'identification mais aucun contexte de sécurité n'est fourni par le client. Cela est généralement dû au fait que le client ne fournit pas de données d'identification au serveur.

    vmcid: 0x0

    code mineur : 0

    terminé : non

    Vous pouvez également arrêter le serveur de catalogue à l'aide de la commande suivante. Cependant, si vous souhaitez effectuer la prochaine étape du tutoriel, vous pouvez maintenir l'exécution du serveur de catalogue.

    • [Unix][Linux] stopOgServer.sh catalogServer -catalogServiceEndPoints localhost:2809 -clientSecurityFile ..\security\client.properties
    • [Windows] stopOgServer.bat catalogServer -catalogServiceEndPoints localhost:2809 -clientSecurityFile ..\security\client.properties

    Si vous arrêtez le serveur de catalogue, la sortie suivante s'affiche.

    CWOBJ2512I: ObjectGrid server catalogServer stopped

    Votre système est à présent partiellement sécurisé grâce à l'activation de l'authentification. Vous avez configuré le serveur pour activer le registre utilisateur, configuré le client pour fournir des données d'identification client et modifié le fichier de propriétés du client et le fichier XML du cluster pour activer l'authentification.

    Si vous avez fourni un mot de passe non valide, une exception s'affiche et indique que le nom d'utilisateur ou le mot de passe est incorrect.

    Pour plus d'informations sur l'authentification du client, voir Authentification du client d'application.

    Etape suivante du tutoriel