Guía de aprendizaje de seguridad de Java SE - Paso 4

Basándose en el paso anterior, el siguiente tema muestra cómo implementar la autenticación de cliente en un entorno distribuido de eXtreme Scale.

Antes de empezar

Asegúrese de que ha completado Guía de aprendizaje de seguridad de Java SE - Paso 3. Debe haber creado y compilado el */*SecureSimpleApp.java de ejemplo en un archivo sec_sample.jar y debe haber creado un archivo de configuración denominado security.xml.

Acerca de esta tarea

Con la autenticación de cliente habilitada, un cliente se autentica antes de conectarse al servidor eXtreme Scale. Esta sección muestra cómo puede realizarse la autenticación de cliente en un entorno de servidor de eXtreme Scale, utilizando el */*SecureSimpleApp.java de ejemplo para la demostración.Credencial del cliente

El */*SecureSimpleApp.java de ejemplo utiliza las dos implementaciones de plug-in siguientes para obtener credenciales de cliente:

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

Para obtener más información sobre estos plug-ins, consulte Programación de la autenticación de cliente.

Autenticación de servidor

El ejemplo utiliza una implementación incorporada de eXtreme Scale: KeyStoreLoginAuthenticator, que tiene finalidades de pruebas y de ejemplo (un almacén de claves es un registro de usuarios sencillo y no se puede utilizar para la producción). Para obtener más información, consulte el tema sobre el plug-in de autenticador en Programación de la autenticación de cliente.

Procedimiento

  1. En una ventana de línea de mandatos, vaya al directorio inicio_wxs.
  2. Vaya al directorio inicio_wxs/security que ha creado en la sección Guía de aprendizaje de seguridad de Java SE - Paso 3.
  3. Cree un archivo de configuración JAAS que aplique un método de autenticación al servidor, og_jaas.config. El KeyStoreLoginAuthenticator al que se hace referencia en el archivo security.xml utiliza un almacén de claves mediante el módulo de inicio de sesión JAAS "KeyStoreLogin". El almacén de claves se puede configurar como una opción para la clase KeyStoreLoginModule.
    og_jaas.config
    KeyStoreLogin{
    com.ibm.websphere.objectgrid.security.plugins.builtins.KeyStoreLoginModule required
         keyStoreFile="../security/sampleKS.jks" debug = true;
    };
  4. Cree un almacén de claves sampleKS.jks con la contraseña sampleKS1.
  5. Vaya al directorio inicio_java/bin y ejecute la herramienta de claves.
  6. Vaya al directorio inicio_wxs /security y cree dos usuarios, "manager" y "cashier", con sus respectivas contraseñas.
    1. Utilice la herramienta de claves para crear un usuario "manager" con la contraseña "manager1" en el almacén de claves sampleKS.jks.
      keytool -genkey -v -keystore ./sampleKS.jks -storepass sampleKS1
      -alias manager -keypass manager1
      -dname CN=manager,O=acme,OU=OGSample -validity 10000
    2. Utilice la herramienta de claves para crear un usuario "cashier" con la contraseña "cashier1" en el almacén de claves sampleKS.jks.
      keytool -genkey -v -keystore ./sampleKS.jks -storepass sampleKS1
      -alias cashier -keypass cashier1 -dname CN=cashier,O=acme,OU=OGSample
      -validity 10000
  7. Vaya al directorio inicio_wxs/properties.
  8. Copie el archivo sampleClient.properties.
    cp ../properties/sampleClient.properties client.properties
  9. En el directorio inicio_wxs/security, guárdelo como client.properties.
    Realice los cambios siguientes en el archivo client.properties:
    1. securityEnabled: establezca securityEnabled en true (valor predeterminado) para habilitar la seguridad del cliente, incluida la autenticación.
    2. credentialAuthentication: establezca credentialAuthentication en Supported (valor predeterminado), que significa que el cliente da soporte a la autenticación de credenciales.
    3. transportType: establezca transportType en TCP/IP, que significa que no se utilizará SSL.
  10. Copie el archivo sampleServer.properties.
    cp ../properties/sampleServer.properties server.properties
  11. En el directorio inicio_wxs/security, guárdelo como server.properties.
    Realice los cambios siguiente en el archivo server.properties:
    1. securityEnabled: establezca el atributo securityEnabled en true.
    2. transportType: establezca el atributo transportType en TCP/IP, que significa que no se utiliza SSL.
    3. secureTokenManagerType: establezca el atributo secureTokenManagerType en none para no configurar el gestor de señales seguro.
  12. Vaya al directorio inicio_wxs/bin y, según la plataforma, emita uno de los mandatos siguientes para iniciar un servidor de catálogo. Debe emitir las opciones de la línea de mandatos -clusterFile y -serverProps para pasar las propiedades de seguridad:
    • [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. Inicie un servidor de contenedor denominado c0 con uno de los siguientes scripts. El archivo de propiedades de servidor se pasa emitiendo -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. Después de iniciar el servidor de catálogo y el servidor de contenedor, ejecute el ejemplo sec_sample.jar tal como se muestra a continuación:
    java -classpath ../lib/objectgrid.jar;../applib/sec_sample.jar
    		com.ibm.websphere.objectgrid.security.sample.guide.SecureSimpleApp
    ../security/client.properties manager manager1

    [Linux] Utilice dos puntos (:) para el separador de classpath en lugar de punto y coma (;) como en el ejemplo anterior.

    Después de emitir la clase, se obtiene la siguiente salida:

    El nombre de cliente para ID 0001 es fName lName.

  15. Verifique el tamaño de la correlación "customer" insertada en la cuadrícula "accounting" emitiendo el mandato xscmd como se indica a continuación:
    • [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. Opcional: para detener los servidores de contenedor o catálogo, puede utilizar stopOgServer. Sin embargo tendrá que proporcionar un archivo de configuración de seguridad. El archivo de propiedades de cliente de ejemplo define las siguientes dos propiedades para generar una credencial ID usuario/contraseña (manager/manager1).
    credentialGeneratorClass=com.ibm.websphere.objectgrid.security.plugins.builtins.UserPasswordCredentialGenerator 
    credentialGeneratorProps=manager manager1

    Detenga el contenedor c0 con el mandato siguiente.

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

    Si no proporciona la opción -clientSecurityFile, verá una excepción con el mensaje siguiente.

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

    >> org.omg.CORBA.NO_PERMISSION: el servidor requiere la autenticación de credenciales, pero no hay contexto de seguridad del cliente. Normalmente, esto sucede cuando el cliente no pasar ninguna credencial al servidor.

    vmcid: 0x0

    código menor: 0

    completado: No

    También puede concluir el servidor de catálogo utilizando el mandato siguiente. Sin embargo, si desea continuar intentando el siguiente paso de la guía de aprendizaje, podrá dejar el servidor de catálogo ejecutándose.

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

    Si concluye el servidor de catálogo, verá la siguiente salida.

    CWOBJ2512I: el servidor ObjectGrid catalogServer se ha detenido

    Ahora el sistema ya es parcialmente seguro y se ha llevado a cabo habilitando la autenticación. Ha configurado el servidor para conectarse en el registro de usuarios, ha configurado el cliente para proporcionar credenciales de cliente y ha cambiado el archivo de propiedades de cliente y el archivo XML del clúster para habilitar la autenticación.

    Si proporciona una contraseña no válida, verá una excepción indicando que el nombre de usuario o la contraseña no son correctos.

    Para obtener más información sobre la autenticación de cliente, consulte Autenticación de cliente de aplicaciones.

    Paso siguiente de la guía de aprendizaje