Instrucciones para su uso desde un proyecto Java

Instalación de la librería utilizando Maven.

                <dependency>
                        <groupId>org.viafirma</groupId>
                        <artifactId>viafirma-client</artifactId>
                        <version>[1.3.2,1.4.0)</version>
                </dependency>

Nota: Es necesario que se añada al proyecto el repositorio http://repositorio.viavansi.com/repo, para que las dependencias sean correctamente resueltas.

Configuración

El cliente Viafirma recupera cuando se inicia por primera vez un conjunto de parametros de configuración que espera encontrar como variables de entorno JNDI, Para que el sistema fucione correctamente, es necesario definir las siguientes variables en el contexto de la aplicación:

<!--  Parametros de configuración para la autenticación utilizando Viafirma.org -->
                <Environment description="Url del proveedor de autenticación utilizado"
                             name="URL_PROVIDER_VIAFIRMA" override="false" type="java.lang.String"
                             value="http://viafirma.viavansi.com/viafirma-1.0-SNAPSHOT"/>

                <Environment description="Configuración del Cliente: Url pública de la aplicación."
                                 name="URL_APLICACION" type="java.lang.String" override="false"
                                 value="http://localhost:8180/tramiton" />

<!--  Parametros de configuración para la firma de ficheros utilizando RMI desde Viafirma.org      
                <Environment description="Configuración del Cliente:URL del conector RMI utilizado para el proceso de firma"
                                         name="URL_VIAFIRMA_RMI_CONECT" type="java.lang.String" override="false"
                                         value="rmi://viafirma.viavansi.com:19111/conectorViafirmaRMI" />
-->

<!-- Para la conexión via Web Services --> 
                        <Environment description="Configuración del Cliente:URL del conector WS utilizado para el proceso de firma" 
                                                name="URL_VIAFIRMA_RMI_CONECT" override="false" type="java.lang.String" 
                                                value="http://viafirma.viavansi.com/viafirma/services/ConectorFirmaRMI"/>
                
                                         

JavaDoc del Api cliente.

Puede la documentación JavaDoc del cliente de Firma en http://www.viafirma.org/viafirma-client/apidocs/org/viafirma/cliente/ViafirmaClient.html.

Utilizar los servicios básicos de autenticación.

El método mas facil para integrar una aplicación servicio de autenticación es implementar un Filter que extienda del filter que ofrece el cliente de Viafirma. A continuación se muestra un ejemplo del código para la integración utilizando un filter J2EE.

/**
 * Filtro que protege la zona de administración de la aplicación.
 * El filtro extiende de AutentifacionViafirmaFilter y debe solo implementar los métodos:
 * isAutenticado(...) : Que informa si la aplicación considera al usuario autenticado. 
 *                                              Tipicamente comprueba si los datos del usuario estan en sessión.
 * procesarAutenticacion(...) : Método que se invoca cuando el resultado de la autenticación
 *                                                               ha sido satisfactorio y donde se entregan los datos del usuario
 *                                               para que la aplicación los procese y marque al usuario como logado.
 *
*/
public class LoginAdminViafirma2Filter extends org.viafirma.cliente.filter.AutentifacionViafirmaFilter {

        /**
         * Comprobamos si el usuario esta logado.
         */
        public boolean isAutenticado(HttpServletRequest request, HttpServletResponse response) {
                boolean autenticado=(request.getSession().getAttribute(Constantes.USUARIO_ADMINISTRADOR)!=null);
                return autenticado;
        }

        
        /**
         * Inicia el proceso de autenticación del usuario administrador
         * 
         */
        public boolean procesarAutenticacion(HttpServletRequest request, HttpServletResponse arg1, UsuarioGenericoViafirma usuarioViafirma) {
                // Comprobamos el usuario tiene permisos para acceder al sistema
                return true.
        }
}

Una vez implementada la clase, solo es necesario definir el filter y el mapeo en el web.xml. A continuación se muestra un ejemplo de configuración en el que se protege con certificado toda la administración (localizada en /admin/* ):

         <!--  Login con viafirma.org -->
        <filter>
                <description>
            Sistema de seguridad para que todos los usuarios que
            utilicen la Administración  tengan que estar
            logados en ViaFirma
        </description>
                <filter-name>LoginAdminFilter</filter-name>
                <filter-class>
           com.avansi.tramiton.filter.LoginAdminViafirma2Filter
                </filter-class>
        </filter>
    
    <!-- Protegemos toda la administración de la aplicación -->
        <filter-mapping>
                <filter-name>LoginAdminFilter</filter-name>
                <url-pattern>/admin/*</url-pattern>
                <dispatcher>FORWARD</dispatcher>
                <dispatcher>REQUEST</dispatcher>        
        </filter-mapping>

Utilizar los servicios avanzados de autenticación.

Si desea tener mas control sobre el proceso de autenticación, tambien puede utilizar directamente los métodos que ofrece la clase org.viafirma.cliente.ViafirmaClient. A continuación un ejemplo de uso del api cliente:

                try {
                        if (!cliente.isResponseAuthentication(request)) {
                                // aún no hay datos, iniciamos la autenticación
                                cliente.autenticar(request, response);
                        } else {
                                // La autenticación ya se ha producido
                                // Recuperamos los datos recuperados del certificado del
                                // usuario.
                                Map<String, String> result = cliente.processResponseAuthentication(request, response);
                                // metemos el resultado en request para que pueda ser pintado en
                                // a siguiente página.
                                request.getSession().setAttribute("result", result);
                                response.sendRedirect(URI_OK);
                        }
                } catch (InternalException e) {
                        // No se ha podido redireccionar al usuario para que realice la
                        // autenticación.
                        // redireccionamos a la página de error de autenticación.
                        request.getSession().setAttribute("error", e.getMessage());
                        request.getSession().setAttribute("codError", e.getCodigoError());
                        response.sendRedirect(URI_ERROR);
                }

Utilizar los servicios básicos de firma.

TODO

Utilizar los servicios básicos de Autenticación.

TODO

Utilizar los servicios de la plataforma desde .Net, PHP, RoR

Puede obtener el WSDL de los servicios de viafirma desde: http://viafirma.viavansi.com/viafirma/services/ConectorFirmaRMI?wsdl TODO