Foros del Web » Administración de Sistemas » Apache »

WS Axis2 con wss4j en Java

Estas en el tema de WS Axis2 con wss4j en Java en el foro de Apache en Foros del Web. Hola a todos, estoy haciendo un WS con Axis2 agregandole seguridad de WSSL4j pero tengo problemas para comprobar si realmente la configuración del service.xml esta ...
  #1 (permalink)  
Antiguo 23/05/2011, 11:13
 
Fecha de Ingreso: mayo-2011
Mensajes: 1
Antigüedad: 13 años, 5 meses
Puntos: 0
Exclamación WS Axis2 con wss4j en Java

Hola a todos, estoy haciendo un WS con Axis2 agregandole seguridad de WSSL4j pero tengo problemas para comprobar si realmente la configuración del service.xml esta correcto. Agradezco de antemano si me puede ayudar con este problema.

El servicio me levanta de forma correcta y en ningún momento me muestra error. Pero al parecer solo efectúa el llamado del metodo, en ningun momento se esta mandado a llamar el Handler que configure en el Service, para realizar la comprobación.

Cree un archivo que se llama PWCallBack.java el cual tiene System.out y Log.info para poderlo visualizar en la consola o en los logs, pero no me muestra nada, lo que me hace pensar que en ningún momento paso por ahí.

Los pasos que segui fueron los siguientes.

Del lado del servidor tengo mi archivo service.xml con la siguiente configuración.


Código HTML:
<?xml version="1.0" encoding="UTF-8"?>
<service>
	<description> Web service</description>	
	<messageReceivers>
		<messageReceiver mep="http://www.w3.org/2004/08/wsdl/in-out"
			class="org.apache.axis2.rpc.receivers.RPCMessageReceiver" />
	</messageReceivers>	
	<parameter name="ServiceClass">com.auntentia.ws.servidor.security.EchoSecurity</parameter>
	<operation name="datos" mep="http://www.w3.org/2004/08/wsdl/in-out" />
	
	<requestFlow>
		<handler type="java:org.apache.ws.axis.security.WSDoAllReceiver">
			<parameter name="usuario" value="panchoLopez"/>
        	<parameter name="passwordCallbackClass" value="com.auntentia.ws.servidor.security.PWCallback"/>
        	<parameter name="action" value="UsernameToken"/>
        	<parameter name='passwordType' value='PasswordText'/>
        </handler>
	</requestFlow>
	
	
	<requestFlow >
		<handler type='java:org.apache.ws.axis.security.WSDoAllSender' >
            <parameter name='action' value='UsernameToken'/>
            <parameter name='user' value='ticket'/>
            <parameter name='passwordCallbackClass' value='com.auntentia.ws.servidor.security.PWCallback'/>
            <parameter name='passwordType' value='PasswordText'/>
        </handler>
   </requestFlow >
	
</service> 





Con 2 clases que contiene los siguiente



Código:
package com.auntentia.ws.servidor.security;


public class EchoSecurity {
	
	
	public String datos(String usuario, String password) {
		System.out.println("Entra a autentificar usuario y password");
		return "Se autentifico: " + usuario + " : " + password; 
	}	
}


La segunda clase es:

Código:
package com.auntentia.ws.servidor.security;

import java.io.IOException;
import java.util.logging.Logger;

import javax.security.auth.callback.Callback;
import javax.security.auth.callback.CallbackHandler;
import javax.security.auth.callback.UnsupportedCallbackException;
import org.apache.ws.security.WSPasswordCallback;

public class PWCallback implements CallbackHandler {
	
	Logger LOG;
	
	/**
	 * Servicio
	 */
	public void handle(Callback[] callbacks) throws IOException, UnsupportedCallbackException {
			String usuario = "";
			String password = "";
			for (Callback callback : callbacks) {
				System.out.println("Entro al proceso servidor");
				LOG.info("Entro al proceso servidor");
				
				if (callback instanceof WSPasswordCallback) {
		            WSPasswordCallback pc = (WSPasswordCallback)callback;
		            // set the password given a username
		            
		            System.out.println(pc.getIdentifer());
		            LOG.info(pc.getIdentifer());
		            if ("panchoLopez".equals(pc.getIdentifer())) {
		                pc.setPassword("security");
		                System.out.println(pc.getPassword());
		                LOG.info(pc.getPassword());
		            }
		        } else {
		        	System.out.println("ERROOOOORRRRR");
		        	LOG.info("ERROOOOORRRRR");
		            throw new UnsupportedCallbackException(callback, "Unrecognized Callback");
		        }
			}
			System.out.println("Termino Proceso servidor");	
			LOG.info("Termino Proceso servidor");
	}
}
De esto, genero un paquete echoServiceSecurity.aar que dejo en la ruta de mi servidor Apache (apache-tomcat-6.0.29\webapps\axis2\WEB-INF\services).

Corro mi servicio y cuando levanta me dirijo a la siguiente pagina

http://localhost:8080/axis2/services/EchoServiceSecurity?wsdl

Este me genera un archivo echoServiceSecurity.wsdl

El cual lo muevo a la axis2-1.4.1\axis2-1.4.1\bin con el proposito de que me cree mis archivos Java.

Me crea los siguientes archivos.

Código:
EchoServiceSecurityCallbackHandler.java
EchoServiceSecurityStub.java
Estos dos archivos los muevo a mi proyecto cliente.
Aquí mismo creo otro archivo de prueba que tiene lo siguiente.


Código:
package com.auntentia.ws.servidor.cliente;

import java.rmi.RemoteException;

import com.auntentia.ws.servidor.security.EchoServiceSecurityStub;


public class TestSecurity {
	/**
	 * Metodo principal de la clase
	 * @param args
	 */
	public static void main(String[] args) {
		EchoServiceSecurityStub customer = null;
		EchoServiceSecurityStub.Datos request = null;
		EchoServiceSecurityStub.DatosResponse response = null;
		
		try {
			customer = new EchoServiceSecurityStub();
			request = new EchoServiceSecurityStub.Datos();
			request.setUsuario("Admin");
			request.setPassword("security");
			response = customer.datos(request);
			System.out.println(response.get_return());

		} catch (RemoteException excepcionDeInvocacion) {
			System.err.println(excepcionDeInvocacion.toString());
		}

	}
	
}

Etiquetas: java
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 12:59.