Desde la versión 3.16 de viafirma platform se soporta una modalidad de autenticación basada en SSL client auth (handshake entre el servidor y el navegador por el cual se solicita al cliente un certificado digital). Para utilizarlo, es necesario disponer del módulo Viafirma ssl-authenticator. En este caso, no aplican los parámetros de Policy de autenticación; el usuario podrá escoger cualquier certificado de usuario, y se devolverán los datos a la aplicación, la cual podrá decidir qué hacer con el usuario (permitirle acceder, denegar acceso, verificar si la Autoridad de Certificación es adecuada, etc.).
El proceso que se sigue es el siguiente:
Para hacer esta integración, se pueden utilizar los clientes Java o .NET, o realizar directamente llamadas a servicios REST.
Podemos encontrar un ejemplo de uso de esta lógica de invocación directa en la aplicación de ejemplo.
Como se verá en ese ejemplo de código, se realiza una preparación de la operación, devolviendo el servidor un objeto con el código de operación y el enlace al que redirigir al usuario.
ConfigureUtil.initViafirmaClient();
ViafirmaClient viafirmaClient = ViafirmaClientFactory.getInstance();
SSLClientAuthOperationResponse result = viafirmaClient.prepareSSLClientAuthentication(callbackURL);
String redirectURL = result.getRedirectURL();
response.sendRedirect(redirectURL);
La callbackURL es una URL interna de la aplicación a la que se llamará recibiendo el operationId como query param. En el caso de la aplicación de ejemplo, esta URL es exampleAuthenticationSSLClientAuthResult.jsp, que contiene la siguiente lógica:
ConfigureUtil.initViafirmaClient();
ViafirmaClient viafirmaClient = ViafirmaClientFactory.getInstance();
String operationId = (String) request.getParameter("operationId");
CertificateValidationResponse certificateValidationResponse = viafirmaClient.getCertificateValidationResponse(operationId, null);
Pudiendo ya hacer uso de los valores incluidos en CertificateValidationResponse.
En proceso.