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.
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 clienteEl */*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.
- En una ventana de línea de mandatos, vaya al directorio inicio_wxs.
- Vaya al directorio inicio_wxs/security que ha creado en la sección Guía de aprendizaje de seguridad de Java SE - Paso 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;
};
- Cree un almacén de claves sampleKS.jks con la contraseña sampleKS1.
- Vaya al directorio inicio_java/bin y ejecute la herramienta de claves.
- Vaya al directorio inicio_wxs /security y cree dos usuarios, "manager" y "cashier", con sus respectivas contraseñas.
- 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
- 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
- Vaya al directorio inicio_wxs/properties.
- Copie el archivo sampleClient.properties.
cp ../properties/sampleClient.properties client.properties
- En el directorio inicio_wxs/security, guárdelo como client.properties.
Realice los cambios siguientes en el archivo
client.properties:
- securityEnabled: establezca securityEnabled en true (valor predeterminado) para habilitar la seguridad del cliente, incluida la autenticación.
- credentialAuthentication: establezca credentialAuthentication en Supported (valor predeterminado), que significa que el cliente da soporte a la autenticación de credenciales.
- transportType: establezca transportType en TCP/IP, que significa que no se utilizará SSL.
- Copie el archivo sampleServer.properties.
cp ../properties/sampleServer.properties server.properties
- En el directorio inicio_wxs/security, guárdelo como server.properties.
Realice los cambios siguiente en el archivo
server.properties:
- securityEnabled: establezca el atributo securityEnabled en true.
- transportType: establezca el atributo transportType en TCP/IP, que significa que no se utiliza SSL.
- secureTokenManagerType: establezca el atributo secureTokenManagerType en none para no configurar el gestor de señales seguro.
- 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]](./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"
- Inicie un servidor de contenedor denominado c0 con uno de los siguientes scripts. El archivo de propiedades de servidor se pasa emitiendo -serverProps.
![[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"
- 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
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.
- 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]](./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
- 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]](./icons/ngunix.gif)
stopOgServer.sh c0 -catalogServiceEndPoints
localhost:2809 -clientSecurityFile ..\security\client.properties
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]](./icons/ngunix.gif)
stopOgServer.sh catalogServer -catalogServiceEndPoints
localhost:2809 -clientSecurityFile ..\security\client.properties
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