Archivo | 08:02 hrs.

Bienvenido a la iniciativa Dharma

26 may 2008

Creo que aquí no soy el único que se siente realmente atraído por la serie Lost.
La Red ya se encuentra repleta de miles de críticas acerca de esta serie y de muchas indagaciones acerca de toda la simbología que aparece durante todo el desarrollo de la intrigante y desconcertante trama.

Una de estas inquietantes relaciones es la que podemos observar en el logo de la Corporación Dharma con la iconografía de una corriente filosófica oriental conocida como “Bagua”, pero como digo, ya hay mucho contenido en la red acerca de esto.

Después de todo esto lo que quiero es contaros cómo podemos hacer más atractiva, para nosotros los Lostadictos, la imagen con la que se inicia el IDE de Eclipse, es bien simple.

En la carpeta donde tenemos instalado/desplegado nuestro Eclipse tenemos que irnos a:

plugins\org.eclipse.platform_3.3.2.R33x_v20071022

aunque dependiendo de nuestra versión puede ser distinta.

En cualquier caso lo que tenemos que hacer es sustituir el archivo splash.bmp, que es el que se usa durante el inicio de Eclipse y poner en su lugar este otro:

Logo Eclipse Dharma 

Así cada vez que tengamos que arrancar el IDE se nos vendrá a la mente todos los personales que habitan en la Isla: Benjamin Linus, Jhon Lock, Jack Shephard… la Corporación Dharma…

Muchas gracias, namaste y buena suerte.

Preprocesado de peticiones SOAP en JAX-WS

25 may 2008

En el caso de que necesitemos establecer algún tipo de preprocesamiento/filtro/mecanismo de seguridad a un servicio web, una de las formas más interesantes es utilizando los manejadores HandlerChain que proporciona JAX-WS 2.x.

En primer lugar implementamos el manejador, que nos permitirá realizar procesamientos y postprocesamientos sobre las peticiones SOAP que lleguen a nuestro servicios web. Os dejo un ejemplo de un manejador que permite filtrar por ip:



public class SecurityServiceWebHandler  implements MessageHandler{

 private static Log log=LogFactory.getLog(SecurityServiceWebHandler.class);

 public Set getHeaders() {

 	return null;

 }

 public void close(MessageContext context) {

 }

 public boolean handleFault(MessageHandlerContext context) {

 	return true;

 }	/** Comprueba que las ips que acceden a la aplicación son efectivamente ip permitidas.

  * @see javax.xml.ws.handler.Handler#handleMessage(javax.xml.ws.handler.MessageContext)

  */

 public boolean handleMessage(MessageHandlerContext context) {

 	ServletRequest servletRequest = ((ServletRequest)context.get(MessageContext.SERVLET_REQUEST));

                // Obtenemos la ip remota que invoca al Servicio Web

 	String remoteAddres=servletRequest.getRemoteAddr();

 	String allowed="192.168.10.160,80.58.0.12";

 	if(StringUtils.contains(allowed, remoteAddres)){

 		if(log.isInfoEnabled())log.info("Servicio Web solicitado desde ip: "+remoteAddres);

 	}else{

 		log.error("Acceso denegado. La ip "+remoteAddres+" no tiene permiso para acceder a los WS.");

 		throw new WebServiceException("Acceso denegado. La ip "+remoteAddres+" no tiene permiso para acceder a los WS.");

 	}

 	return true;

 }

}

Una vez implementado el manejador, lo siguiente es publicarlo en el fichero handlerchain.xml

<handler-chains xmlns=”http://java.sun.com/xml/ns/javaee”>
<handler-chain>
<handler>
<handler-class>org.viafirma.conector.security.SecurityServiceWebHandler</handler-class>
</handler>
</handler-chain>
</handler-chains>
El último paso es asociar nuestro servicio web con el manejador, mediante la anotación @HandlerChain.



@HandlerChain(file="handlerchain.xml")

@WebService(serviceName="ConectorFirmaRMIService",targetNamespace = "http://viafirma.org/client/", name = "ConectorFirmaRMIClient",portName="ConectorFirmaRMI",

endpointInterface = "org.viafirma.cliente.firma.rmi.FirmaClienteRMI")

public class ConectorFirmaRMI  extends UnicastRemoteObject implements FirmaClienteRMI {

Como ejemplo, gracias a este código podremos recuperar y registrar las ips de todas las peticiones entrantes a nuestro servicio web, y denegar las ips no admitidas.

Crítica a OpenBank

23 may 2008

Tras la última actualización de su web ésta ha dejado de funcionar en Safari y a funcionar muy mal en Firefox, haciéndome imposible operar, no entiendo como un banco que ofrece sus servicios vía telemática no se preocupa mínimamente por que su web sea accesible, usable y cumpla con los estándares. Os dejo un recorte del correo de respuesta que me han envido, la alternativa que me han dejado es dejar de utilizar su banco:

—-

Muchas gracias por su mensaje, Sr. Garcia :

Es posible que la incidencia que nos comenta se deba al sistema
operativo que está utilizando
.

En este sentido nosotros le informamos que la web de Openbank está
optimizada para una resolución de 1024 * 768 píxeles, con Windows y
con los navegadores Microsoft Internet Explorer 5.0 o superior /
Netscape 6.2 o superior.

Si no dispone de alguna de estas versiones puede descargárselas
gratuitamente en la página web de netscape y en la de microsoft.

Quedamos a su disposición para cualquier otra consulta que desee
realizarnos.

Reciba un cordial saludo,
Departamento Comercial
OPENBANK

Otros enlaces relacionados:

http://www.invertirol.com/index.php/Cartas-al-Director/Openbank-=-chiringuito.html

Humor: El framewok perfecto

19 may 2008

Una de las claves del éxito de cualquier empresa de desarrollo es el framework sobre el que construye sus aplicaciones. En Viavansi, estamos muy implicados con este tema, y desde el departamento de I+D hemos desarrollado un potente framework, os dejo el diagrama de arquitectura:

Framework de trabaja de Viavansi

 

Firma electrónica y accesibilidad web

10 may 2008

En las listas de AccesoWeb de SIDAR mantuvimos en 2005 una interesante discusión sobre la compatibilidad entre los puntos de verificación de accesibilidad de WAI y la firma electrónica, que requiere realizar procesos en cliente con tecnologías obviamente ejecutadas en cliente (Javascript + Applet Java o Active X). En tres años ha habido realmente poca evolución a este respecto, y considero que la discusión se puede mantener vigente.

Sobre la firma electrónica 

No confundamos firma electrónica con autenticación con certificado. Podemos acceder (login) a una aplicación web con nuestro certificado, y que sea accesible. En lo que se refiere a la firma electrónica en una aplicación web, hay sin embargo una serie de conceptos claros. El proceso técnico es más o menos como el que sigue (ahorrando varios pasos para no hacer un post tipo Biblia):

  1. El usuario introduce los datos que debe firmar. Esto puede ser de muchas formas; rellenar un formulario HTML, adjuntar un fichero, etc.
  2. El navegador del usuario debe generar un resumen (digest) con un algoritmo hash (tipo MD5 o SHA-1) de la información a firmar.
  3. El navegador debe utilizar la clave privada del certificado digital del cliente para encriptar esta información. Esta encriptación es simétrica; lo que se encripta con la clave privada podrá ser desencriptada con la clave pública, y sólo con esta. Para realizar esta operación, el navegador debe consultar de alguna forma el almacén de certificados del cliente, hacerle escoger el certificado con el que quiere firmar, y utilizar la clave privada almacenada en el certificado escogido para encriptar ese hash. Ya tenemos la firma: es el hash encriptado.
  4. El navegador envía al servidor de firma todos los datos necesarios: el hash encriptado y la clave pública del certificado digital del cliente. Ahora éste lo almacena con el formato que se considere más oportuno. En cualquier momento se puede verificar la validez de esa firma con una sencilla operación: desencriptando la firma con la clave pública del certificado, y comparándola con el resultado de realizar el hash Almacenar el documento original con su firma (el hash encriptado). De esta forma, si algún día se quiere comprobar que lo que introdujo el usuario (el documento original) no ha sido modificado maliciosamente (lo que le confiere validez legal), se puede realizar una sencilla operación de comprobación de firma, consistente en desencriptar la firma con la clave pública del certificado digital, obteniendo el hash, y aplicando el algoritmo de hash sobre el documento original. Si ambos hash coinciden, la firma es válida.

El problema es que los pasos 2 y 3 deben realizarse en cliente, es decir, en el navegador. Esto se totalmente necesario y obligatorio; precisamente, uno de los puntos clave para mantener la seguridad del proceso se basa en que la clave privada del certificado del cliente nunca sale de la máquina del cliente. Hay un número finito de tecnologías para ejecutar esto en un navegador web: lo más normal son applets Java (como el conocido OpenOCES, que utilizamos en Viafirma y que usan otras plataformas como la de Safelayer) o clientes Active X, invocados desde Javascript. De hecho, éste es uno de los puntos claves para que un trámite telemático sea lo más universal y usable posible: la calidad del componente cliente. Por ejemplo, la semana pasada tardé dos horas, experimentos en 3 máquinas diferentes (ya varios navegadores en cada una, aunque con Opera o Safari no llegas muy lejos) y un buen número de reinstalaciones de componentes para conseguir cambiar a mi mujer de médico de cabecera, debido a la infame calidad de los applets Java de firma de la plataforma @Firma. Si a mí me costó tanto, no quiero imaginar qué le ocurrirá a un usuario de a pie. El mayor problema es que funciona muy mal con el JRE Java 6, pero debería tenerse en cuenta que, salvo que se configure de forma diferente, el JRE se autoactualiza automáticamente, con lo que a estas alturas hasta el panadero de la esquina tiene instalado Java 6 en su máquina.

Sobre la accesibilidad web 

En lo que se refiere a la accesibilidad web, las pautas WAI te exigen que para acceder a tu contenido web no sea imprescindible el uso de applets o javascript. En concreto, la pauta 6.3 dice que “Asegúrese de que las páginas sigan siendo utilizables cuando se desconecten o no se soporten los scripts, applets u otros objetos programados. Si esto no es posible, proporcione información equivalente en una página alternativa accesible”.

Según esta pauta entendemos que no podemos tener una calificación AA de accesibilidad si utilizamos javascript y applets, ya que deberíamos tener una página alternativa. El problema es que no podemos tener una página alternativa ya que la operación que realizamos no se puede realizar de otra forma de forma legal.

Sobre las Administraciones Públicas 

Por último, las Administraciones Públicas exigen por regla general que sus portales web, incluyendo sus oficinas virtuales, alcancen un nivel AA de accesibilidad, esto es, cumplan todos los puntos de verificación de prioridad 1 y 2.

Pero también exigen que para que una operación telemática sea legal, se haga utilizando firma electrónica que, como hemos visto, tiene problemas insalvables de accesibilidad porque hoy por hoy no es posible firmar sin ejecutar lógica de cliente que no todos los navegadores o dispositivos de usuario tienen por qué soportar. Por ello, la alternativa legal que podemos dar a nuestra web con firma electrónica es que el usuario se vaya a la institución físicamente.

¿No es un contrasentido? Se piden dos cosas incompatibles entre sí.

Una conclusión: quedarse en medio.

Bajo mi punto de vista, no debemos olvidar que las pautas WAI se refieren al acceso al contenido. Una Oficina Virtual está mucho más cerca de una aplicación web que de un portal, por lo que debe plantearse si las pautas aplican con la misma restrictividad. En todo caso, siempre se puede tratar de que toda la web sea accesible realmente, y sacar la zona dotada de firma electrónica de la declaración de accesibilidad. Y esperar a que la tecnología avance para superar estos escollos.

Los informáticos somos gente rara :-)

09 may 2008

O al menos yo. Si no, probablemente no me habría estado un buen rato riéndome al ver estos super recortes de código:

usuario.setUsuario(usuario.getUsuario());


if(!usuario.getClaveusuario().equals(usuario.getClaveusuario())) {
addErrorGlobal("ERROR_PASSWORD");
}

Teclas de acceso directo a comandos en Ubuntu

08 may 2008

Volvemos a la carga con otro hilo práctico para hacer más fácil el día a día. Una de las opciones que más me gusta de Windows es la capacidad de asignar teclas de acceso directo a las aplicaciones y comandos. Esto nos evita el famoso Inicio -> Ejecutar -> [comando], que si se hace muchas veces al día acaba siendo pesado (donde esté abrir la consola con Ctrl+Alt+M). ¿Y en Ubuntu, tenemos esta opción?

Pues sí, y en verdad esto es la segunda incursión (tras el popular hilo de la papelera) en la poderosa herramienta de configuración de gnome, el “gconf-editor”, que bien manejado tiene mucho jugo. Si ejecutamos en una consola “gconf-editor” tenemos como ya sabeís la consola de configuración gnome, donde en esta ocasión definiremos teclas de acceso directo para los comandos y aplicaciones más habituales.

Vamos a apps -> metacity -> keybindings_commands : En esta sección se definen combinaciones de teclas que corresponden a comandos. En otras palabras, qué comandos nos gustaría ejecutar mediante teclas directas. Por ejemplo, cojamos command_1 y le asignamos gnome-screenshot que hará una captura de pantalla.

Vamos ahora a apps -> metacity -> global_keybindings : Aquí definimos la combinación de teclas que dispara cada comando. Por ejemplo vamos a pinchar sobre run_command_1 y le asignamos F12. Con esto hemos dicho que al pulsar F12 ejecutemos el comando 1 (antes definido). Pulsa F12 y comprueba que funciona.

Las teclas especiales van entre signos <>, teniendo así <Alt>, <Ctrl>, <Super>, etc. Asimismo es posible asignar combinaciones de teclas, y si en nuestro ejemplo ponemos <Super>F12 por ejemplo capturaríamos la pantalla pulsando la tecla de Windows y F12 simultáneamente.

Las posibilidades como ves son infinitas.

Si tiene firma electrónica, ¿será muy caro, doctor?

05 may 2008

Leo con algo de sorpresa la siguiente noticia, que viene a decir que Telefónica ha tenido una ¿novedosa? idea, montando una empresa que sirva de tercero de confianza en transacciones electrónicas. Concretamente, citando al diario El País, Telefónica sabe del hueco de negocio en las transacciones electrónicas basadas en tecnologías de firma digital, por lo que “ha decidido crear una división denominada Mediador de Confianza, que permitirá validar los certificados electrónicos, autentificar las transacciones electrónicas, tanto por Internet como por móvil, y llevar un servicio de custodia de los documentos electrónicos”.

Esto desde luego no es ninguna sorpresa. Siguiendo un modelo tal vez inspirado en Tractis, Telefónica aprovecha su innegable renombre para erigirse en tercero de confianza en transmisiones electrónicas seguras. Supongo que habrán optado por un modelo de negocio de abstraer la lógica a las empresas (hay que tener en cuenta el fuerte posicionamiento de Telefónica en el mercado de PYMEs), proveyéndoles de soluciones sencillas que solucionen problemas complejos como estos.

Sin embargo, lo que me sorprende sobremanera es lo siguiente; vuelvo a citar al diario “El País”: “La operadora lleva trabajando más de un año en el proyecto, con una inversión de más de 400 millones de euros…”.

¿400 millones de euros? Repaso un poco proyectos por orden de coste decreciente, la importante cantidad que costó CERES, lo que le ha costado a la Junta de Andalucía la creación de @Firma, lo que nos ha costado hacer Viafirma (tener a un crack como Félix ayuda, claro)… pero, ¿400 millones de euros?

Divagando un poco, supongo que habrán comprado 100 o 200 servidores Windows, 300 Linux y 400 Sun (hay probar Solaris, Aix o HP UX, para ver si van bien), y estarán comparando. Supongo que hay dos o tres nuevos turistas espaciales. También supongo que estarán programando en ensamblador, que siempre es más seguro, y a ser posible de espaldas y a la luz de las velas en noches de luna llena. Los algoritmos de encriptación existentes no les valdrán, estarán creando los suyos propios basándose en la lectura de las vías tomistas. No estarán programando con las manos, que cada cual se imagine otra parte del cuerpo con la que se pueda realizar pulsaciones de teclado (bueno, tal vez estén programando a boli e intentando escanearlo con un OCR).

Corcho, pero todavía me sobran euros para darme la vuelta al mundo :-)

En todo caso, divagando, he llegado a la conclusión. Telefónica, para el siguiente presupuesto, nosotros te lo hacemos por la mitad de lo que te digan ;-)