RESPONDER UNA PREGUNTA

Si para responder la pregunta, crees necesario enviar un archivo adjunto, puedes hacerlo a traves del correo [email protected]

    Pregunta:  67804 - GESTIÓN DE COMUNICACIONES CON PASSWORDDIGEST (WSS4J)
Autor:  Sergio Caro
Escenario:

Estamos desarrollando una librería Java para desplegar un subsistema de autenticación, que actúe de intermediario de dos end-points: un programa origen (el cual recibe un mensaje SOAP, realizado por el cliente, y nosotros recibimos un "CallbackHandler" -de la implementación de WebServices Security WSS4J-) y un WebService (basado on CXF, que provee un servicio para validar el user&password dado).

Aquí el diagrama del sistema:

|--------| |------------|
|Client|--SOAP msg->|Program|
|--------| |------------|
| |--------|
-Callback->|Java Lib|
|--------|
| |----| |--------|
-User&Pass-->|WS|<-(validation)->|LDAP|
|----| SOAP msg |--------|

Como puede verse en otras implementaciones, el código (que será añadido en nuestra Java Lib) debería ser el siguiente (teniendo en cuenta que el tipo de la contraseña, por motivos de seguridad obvios, es "PasswordDigest" (véase "OASIS UserName Token specification", lines 196-197 [http://docs.oasis-open.org/wss/v1.1/wss-v1.1-spec-os-UsernameTokenProfile.pdf])):

if (callbacks[i] instanceof WSPasswordCallback) {
WSPasswordCallback pc = (WSPasswordCallback) callbacks[i];
sString login = pc.getIdentifier();
String password = getPassword(login);
pc.setPassword(password);
}

La línea "String password = getPassword(login);" requiere el almacenamiento en local (en el mismo emplazamiento que la Java Lib) de un archivo (o una BBDD) para el mantenimiento del user&pass y la subsiguiente verificación con el callback obtenido (dado que el contenido es un hash, se debe realizar esto para poder enviar la contraseña al WebService).

Por tanto, y este es el obstáculo, NO se nos permite el mantenimiento de dicho fichero (por encontrarse el webService en otra máquina). Por otra parte, el WebService solamente provee un servicio de autenticación (yes/no a un usuario y password dados) y tampoco tenemos acceso a más datos del programa originador o al cliente.

¿Alguna idea de cómo proceder?

Gracias de antemano.


Nombre
Apellidos
Correo
Comentarios