Documento técnico Manual de integración de ASF

Anuncio
Documento técnico
Manual de integración de ASF
Revisión:
v 1.4
Fecha última versión:
junio de 2006
Índice
Introducción...................................................................................................... 3
1_
1.1_
Descripción de plataforma ASF................................................................... 3
1.2_
Módulo WebSigner ........................................................................................ 4
1.3_
Módulo de Autenticación Única (SingleSignOn o SSO).......................... 6
1.4_
Módulo de Validación de Certificados X.509 (X509Validator)................ 6
1.5_
Módulo Gestor de Políticas (PolicyManager)............................................ 7
1.6_
Módulo Servidor de Firmas (SignatureServer) ......................................... 8
1.7_
Módulo Servidor de Cifrado (EncryptionServer) ....................................... 8
1.8_
Módulo TimeStampServer............................................................................ 9
1.9_
Módulo TimeStampClient ............................................................................. 9
1.10_ Módulo de No Repudio (Non Repudiation)................................................ 9
1.11_ Módulo de OCSP ......................................................................................... 10
Integración de ASF........................................................................................ 11
2_
2.1_
Integración del Módulo WebSigner........................................................... 12
2.2_
Integración del Módulo de Autenticación única (SSO) .......................... 12
2.3_
Integración con los Módulos que publican Web Services..................... 12
2.3.1_
Ejemplo de invocación J2EE a Web Services de ASF con axis .. 14
2.3.2_
Ejemplo de invocación .NET (VB.NET) a Web Services de ASF 17
2.3.3_
Invocaciones locales a los Web Services de ASF ......................... 20
2.3.4_
Integración del Módulo Gestor de Políticas (PolicyManager)....... 22
2.3.5_
Integración
del
Módulo
de
Validación
de
Certificados
(X509Validator) ..................................................................................................... 22
2.3.6_
Integración del Módulo Servidor de Firmas (SignatureServer) .... 22
2.3.7_
Integración del Módulo Servidor de Cifrado (EncryptionServer).. 22
2.3.8_
Integración del Módulo TimeStampClient........................................ 22
2.3.9_
Integración del Módulo NonRepudiationService............................. 22
2.4_
Integracion de Módulos sin Web Services............................................... 23
2.4.1_
Integración con el módulo TimeStampServer ................................. 23
2.4.2_
Integración con el módulo OCSPResponder .................................. 23
Título:
Revisión:
Fecha:
Manual de integración de ASF
1.4
junio de 2006
2
1_ Introducción
Este documento tiene como finalidad recoger todos los aspectos relacionados
con la integración de los distintos módulos que componen la Plataforma de
Firma Electrónica Avanzada ASF. Dicha plataforma es una solución completa
para la integración de la Firma Electrónica Avanzada en la infraestructura
informática de una entidad u organización.
1.1_
Descripción de plataforma ASF
La Plataforma ASF es una solución completa para la integración de la Firma
Electrónica Avanzada en una infraestructura informática de una entidad u
organización.
Una de sus características más diferenciadoras es el hecho de permitir la
convivencia con más de una Autoridad de Certificación (CA), independizando
completamente al resto de los sistemas de la complejidad añadida que supone
la compatibilidad con más de una CA.
Los principales aspectos que permite resolver la utilización de ASF en
cualquier organización incluyen los siguientes:
•
Autenticación. Permite conocer la identidad de los usuarios remotos
utilizando certificados X.509 como método de autenticación.
•
Integridad. La generación de documentos con firma electrónica
avanzada permite la comprobación de que el documento no ha sido
modificado por un tercero desde la generación del mismo.
•
No Repudio. El sistema almacena en una base de datos copias de los
documentos firmados, de forma que puedan ser utilizados en caso de
necesidad como prueba de autoría.
•
Confidencialidad. La generación de documentos cifrados permite
garantizar que sólo los destinatarios de los mismos podrán acceder a su
contenido.
El entorno ASF establece una solución de principio a fin en la seguridad de las
transmisiones con acciones para firmar, cifrar, fechar y transmitir todo tipo de
documentos electrónicos de un modo seguro.
Título:
Revisión:
Fecha:
Manual de integración de ASF
1.4
junio de 2006
3
ASF está compuesto de un conjunto de módulos que permiten abarcar de
manera ágil y sencilla todos los aspectos relacionados con el proceso de
implementación de Firma Electrónica Avanzada dentro de cualquier aplicativo.
Cada módulo está especializado en una tarea específica, interactuando entre
ellos para dar la solución completa. De esta forma las tareas habitualmente
comunes de un entorno PKI están implementadas sólo en uno de los módulos
de utilidad. Por ejemplo, cuando cualquiera de los módulos necesita conocer la
validez de un certificado, interactúa con el módulo X509·Validator, quien le
confirmará o le rechazará la validez del certificado.
ASF contempla el ciclo de vida completo de utilización de certificados
proporcionando herramientas para:
•
Constituir una autoridad de certificación
•
Creación de documentos firmados
•
Validación y control de documentos firmados
•
Validación de la vigencia de los certificados
•
Registro de información de la firma de documento, de cara al no
repudio
•
Cifrado y descifrado de documentos
•
Establecer políticas de firma a nivel de aplicaciones y/o operaciones.
1.2_
Módulo WebSigner
El módulo WebSigner está compuesto por una serie de componentes y
tecnologías que permiten la generación de documentos firmados en formato
PKCS#7, CMS y XMLDSIG en sistemas basados en tecnología web.
Asimismo, permite el cifrado y descifrado de documentos en formato PKCS#7
y CMS.
WebSigner es el componente cliente de ASF diseñado para permitir a un
usuario la firma y el cifrado de documentos y formularios web desde una
página HTML para enviar al servidor.
La integración es posible en aplicaciones de diversa índole, tales como en
mecanismos de identificación (autenticación de cliente) para el acceso a
Título:
Revisión:
Fecha:
Manual de integración de ASF
1.4
junio de 2006
4
servicios web, como para la transmisión de documentos digitales o formularios
firmados.
Debido a que se trata de un componente cliente se han cuidado los aspectos de
compatibilidad entre distintos navegadores y tecnologías así como la usabilidad
de cara al usuario. WebSigner proporciona utilidades para permitir filtrados de
certificados autorizados en cada proceso.
WebSigner expone un Interfaz Javascript común, para la invocación de los
componentes de firma y cifrado, y la independización de la tecnología
utilizada. Para Internet Explorer, WebSigner basa su solución en la innovadora
CAPICOM, un control ActiveX que proporciona una interfaz COM para la
biblioteca criptográfica Microsoft CryptoAPI, para la firma XMLDSIG basa su
solución en las librerias XERCES, XALAN y XSEC de Apache
implementando el modulo en C++.
Para Netscape 6.x o superior, la solución está basada en un applet Java que
accede al almacén de certificados propietario de Netscape y realiza las
operaciones de firma a través de JSS/NSS. Este mismo applet es la solución
adoptada para el uso de Websigner en Mozilla desde las version 1.x, teniendo
en cuenta que para algunas versiones de este navegador será necesario
descargar el JDK.
En el caso del applet existen dos versiones, una versión "ligera", que no
soporta el formato XMLDSig, y una versión completa, de tamaño mucho
mayor, que soporta XMLDSig. La versión completa está basada en las librerias
XERCES, XALAN y XSEC de Apache.
Las funcionalidades incluidas en WebSigner son las siguientes:
Título:
Revisión:
Fecha:
•
Uso de firma única o múltiple (mancomunada) en formato PKCS#7,
CMS y XMLDSIG. Este módulo ha sido diseñado para permitir la
firma de cualquier tipo de documento o formulario por más de una
persona en los tres formatos especificados para su posterior envio al
servidor, permitiendo su integración en cualquier aplicación.
•
Filtrado de certificados autorizados para el proceso. Esta funcionalidad
permite facilitar al usuario la selección del certificado que puede
utilizar, en función de las políticas de confianza definidas para el
proceso en el servidor.
•
Cifrado y descifrado de un formulario o un documento. Gracias a la
implementación de WebSigner es posible cifrar cualquier tipo de
documento o formulario que deseemos enviar al servidor.
Manual de integración de ASF
1.4
junio de 2006
5
A alto nivel, los servicios más importantes ofrecidos por este módulo son:
•
Obtención de la lista de certificados de la máquina (almacén del
navegador y tarjeta criptográfica)
•
Firma de un documento/formulario con diferentes algoritmos (PKCS#7,
CMS, XMLDSig)
•
Añadir firmantes a una firma realizada
•
Verificación de la corrección del formato de una firma (sin
comprobación de la revocación)
•
Cifrado utilizando un certificado
•
Descifrado utilizando un certificado
1.3_
Módulo de Autenticación Única (SingleSignOn o
SSO)
El Módulo de Autenticación Única (en adelante, SingleSignOn) permite
integrar varias aplicaciones en un sistema único de autenticación, de forma que
una vez que un usuario se autentique en una de ellas, no necesita autenticarse
para acceder al resto.
Todas las aplicaciones que se integren con un mismo servidor de Single SignOn (es decir, que interactúen todas ellas con el módulo SingleSignOn del
mismo servicio ASF) deben pertenecer a uno de los dominios admitidos por el
servidor de Single Sign On, no siendo posible con una misma sesión navegar
entre dominios distintos.
1.4_
Módulo de Validación de Certificados X.509
(X509Validator)
El módulo de Validación de Certificados X.509 (en adelante, X509Validator)
es el encargado de validar tanto el periodo de validez como el estado de
revocación de certificados X.509.
El módulo abarca diversos protocolos de validación del estado de revocación,
OCSP, CRLs mediante LDAP, HTTP y explotación de toda la información
Título:
Revisión:
Fecha:
Manual de integración de ASF
1.4
junio de 2006
6
disponible en los propios certificados (Puntos de Distribución de CRLS e
Información de Acceso a la Autoridad con URLs de servidores OCSP).
Este módulo hace uso del módulo PolicyManager para obtener los prestadores
de confianza, los métodos de comprobación de revocación asociados a un
prestador, etc. y del módulo NonRepudiation para registrar en la base de datos
de no repudio la información utilizada para comprobar la revocación de los
certificados (CRLs, respuestas OCSP, etc.).
A alto nivel, los servicios más importantes ofrecidos por este módulo a las
aplicaciones son:
•
Validación de un certificado (no caducidad ni revocación)
•
Validación de un certificado y extracción de los datos incluidos en el
mismo (mediante la utilización del módulo de gestión de políticas)
1.5_
Módulo Gestor de Políticas (PolicyManager)
El Módulo Gestor de Políticas (en adelante, PolicyManager) proporciona
servicios de configuración al resto de móudulos de ASF. El PolicyManager se
encarga de acceder a la BD de ASF, donde se almacena toda la información
que define el comportamiento de la plataforma.
El PolicyManager proporciona al resto de módulos información de:
•
los prestadores dados de alta y los métodos de comprobación de
revocación asociados a cada prestador
•
las aplicaciones dadas de alta y sus operaciones de firma, verificación y
cifrado
•
los prestadores válidos para cada aplicación y operación de verificación
y cifrado
•
los certificados de firma y cifrado asociados a las operaciones
•
las restricciones de acceso asociadas a las aplicaciones
A alto nivel, los servicios ofrecidos por más importantes este módulo a las
aplicaciones son:
Título:
Revisión:
Fecha:
Manual de integración de ASF
1.4
junio de 2006
7
•
Obtención de las CAs válidas para una aplicación / operación.
•
Obtención de los datos de un certificado, según la estructura definida
en la consola de administración.
•
Obtención de LDAP usados por el sistema.
1.6_
Módulo Servidor de Firmas (SignatureServer)
El Módulo Servidor de Firmas (en adelante, SignatureServer) firma datos y
documentos en distintos formatos y con distintos algoritmos, y verifica firmas
realizadas en cualquiera de esos formatos y con cualquiera de esos algoritmos.
El Servidor de Firmas es capaz de generar firma múltiple secuencial y paralela,
tanto directa como diferida.
Este módulo hace uso de los módulos PolicyManager para obtener los
certificados válidos para firmar, los prestadores válidos para verificar, etc.,
X509Validator para verificar el estado de los certificados implicados en las
operaciones de firma y verificación y NonRepudiation para registrar todas las
operaciones de verificación de firmas realizadas.
A alto nivel, los servicios ofrecidos por más importantes este módulo a las
aplicaciones son:
•
Verificación de firma y obtención de los datos de los firmantes.
Posibilidad de almacenamiento en el no repudio (utilizando el módulo
de no repudio)
•
Verificación de que los datos firmados se corresponden con los
deseados y no fueron modificados antes de llevar a cabo la firma
•
Firma en servidor con los algoritmos soportados por la plataforma
1.7_
Módulo Servidor de Cifrado (EncryptionServer)
El Módulo Servidor de Cifrado (en adelante, EncryptionServer) realiza cifrado
y descifrado de documentos en distintos formatos y con distintos algoritmos.
Título:
Revisión:
Fecha:
Manual de integración de ASF
1.4
junio de 2006
8
Este módulo hace uso de los módulos PolicyManager para obtener los
certificados y prestadores válidos para cifrar y X509Validator para verificar el
estado de los certificados implicados en las operaciones de cifrado y
descifrado.
A alto nivel, los servicios ofrecidos por más importantes este módulo a las
aplicaciones son:
•
Cifrado con los algoritmos admitidos por ASF
•
Descifrado con los algoritmos implementados en ASF
1.8_
Módulo TimeStampServer
El Módulo de TimeStampServer permite a aplicaciones y componentes añadir
sellos de tiempo a documentos o firmas, dotándolas de validez a lo largo del
tiempo.
Las características principales de dicho componente son la recepción de
peticiones, procesado de la petición y envió de sello de tiempo según el RFC
3161. Se permiten restricciones de acceso al servicio de sellado exigiendo que
las mismas vengan firmadas y encapsuladas en un mensaje PKCS7-CMS
SignedData.
1.9_
Módulo TimeStampClient
El Módulo de TimeStampClient ofrece una sencilla interfaz basada en Web
Services (SOAP) para obtener sellos de tiempo, oculta la complejidad de las
autoridades de sellado concentrando en un único punto toda la funcionalidad
del sellado de tiempo.
Se permite una configuración completa a través de la consola de
administración de ASF, tanto de los certificados con los que firman las
respectivas Autoridades de Sellado (TSA en adelante) como los certificados
necesarios para la firma de peticiones en caso de que las TSAs exijan la firma
de las mismas.
1.10_ Módulo de No Repudio (Non Repudiation)
El Módulo de No Repudio (en adelante, NonRepudiation) registra en la Base
de Datos de No Repudio (incluida dentro de la base de datos de ASF) todas las
Título:
Revisión:
Fecha:
Manual de integración de ASF
1.4
junio de 2006
9
firmas verificadas por el módulo SignatureServer, junto con toda la
información utilizada para comprobar el estado de revocación de los
certificados implicados: CRLs, respuestas OCSP, etc.
1.11_ Módulo de OCSP
El módulo servidor de OCSP (OCSP responder) es el encargado de devolver
información del estado de los certificados de múltiples CAs, en el instante que
se recibe una petición en el servidor, de acuerdo con el estándar descrito en el
RFC 2560.
Realiza una comprobación inicial de la firma de la petición OCSP efectuada
por un cliente OCSP y también de su autorización para efectuar este tipo de
peticiones, si no está autorizado se rechaza la petición sin devolver ningún tipo
de información.
Título:
Revisión:
Fecha:
Manual de integración de ASF
1.4
junio de 2006
10
2_ Integración de ASF
La integración con ASF tiene cinco partes diferenciadas:
•
Integración con el componente cliente WebSigner.
•
Integración con los módulos que publican web services
(PolicyManager, X509Validator, SignatureServer, EncryptionServer,
NonRepudiationService, TSAClient) salvo con el módulo de
autenticación única (SingleSignOn).
•
Integración con el módulo de autenticación única (SingleSignOn)
•
Integración con la Autoridad de Sellado de Tiempo (TimestampServer)
•
Integración con el módulo de OCSP.
En los siguientes apartados se describe la integración con todos estos
componentes. Para facilitar la integración con los módulos que publican web
services, se dispone de un Agente de Seguridad, cuya integración está descrita
en el documento TBS_ASFv3.5_Manual de integración Agente de
seguridad_20060110_v1.0.doc. En caso de utilizar el agente de seguridad, no
es necesario realizar la integración de esos módulos tal y como se describe en
el presente documento.
Título:
Revisión:
Fecha:
Manual de integración de ASF
1.4
junio de 2006
11
2.1_
Integración del Módulo WebSigner
La API del componente WebSigner, así como el orden lógico de llamadas al
mismo a la hora de integrarlo en una página HTML o jsp junto con algunos
ejemplos de integración pueden encontrarse en TBS_ASFv3.5_Manual de
integración WebSigner_20060222_v1.0.doc.
2.2_
Integración del Módulo de Autenticación única
(SSO)
El módulo SingleSignOn consta de dos partes. Por un lado está la parte
servidora que se encarga de mantener la información de las sesiones y por otro
lado está la parte cliente que solicita a la anterior información del usuario.
Ambas partes están descritas en TBS_ASFv3.5_Manual de integración
SSO_20060222_v1.0.doc, junto con la descripción de todas sus propiedades y
ejemplos de integración.
2.3_
Integración con los Módulos que publican Web
Services
La integración con todos los módulos que ofrecen Web Services
(PolicyManager,
X509Validator,
SignatureServer,
EncryptionServer,
NonRepudiationService, TSAClient, SingleSignOnService) es similar.
Los pasos a seguir para invocar a un Web Service de ASF son los siguientes:
Título:
Revisión:
Fecha:
Disponer en el cliente (aplicación invocante) de estructuras de datos y
constantes equivalentes a las utilizadas en la función a invocar.
Si la aplicación cliente es J2EE, ASF proporciona las librerías
con las estructuras de datos y las constantes.
Si la aplicación cliente es C, C#, etc., deben generarse las
estructuras de datos y las constantes.
Indicar la URL del Web Service y el método a invocar.
Especificar los parámetros y el valor de retorno.
Manual de integración de ASF
1.4
junio de 2006
12
Especificar el método de serialización de parámetros.
Realizar la invocación.
ASF permite firmar las invocaciones SOAP, pudiendo identificar de esta forma
a la aplicación invocante y permitirle o no el acceso.Para posibilitar la
comprobación de los permisos de acceso, la aplicación invocante debe pasar un
parámetro “invokingApp” identificándose.
En caso de utilizar algún tipo de wizard (ya sea java, .Net, etc.) para generar el
cliente que realizará las invocaciones a los web services, es “muy importante”
mantener el nombre de los parámetros, es decir, el parámetro en el que se pase
el invokingApp debe llamarse invokingApp.
Título:
Revisión:
Fecha:
Manual de integración de ASF
1.4
junio de 2006
13
2.3.1_
Ejemplo de invocación J2EE a Web Services de
ASF con axis
•
Inclusión de las librerías de estructuras de datos y constantes
(asf_data.jar y asf_client.jar) y de las librerías de axis dentro del
CLASSPATH de la aplicación cliente.
•
Importar las clases de axis y las clases de asf_data.jar y
asf_client.jar implicadas en la invocación:
<%@ page import = " jfactory.exchange.ResultInfo,
java.util.ArrayList,
com.tbsolutions.asf.demo.util.Util,
org.apache.axis.client.Call,
org.apache.axis.client.Service,
org.apache.axis.encoding.XMLType,
javax.xml.namespace.QName,
javax.xml.rpc.ParameterMode,
com.tbsolutions.asf.util.Constants,
com.tbsolutions.asf.policymanager.sa.CertAppOperationRestrictionsInfoSet,
com.tbsolutions.asf.policymanager.sa.CertAppOperationRestrictionsInfo,
com.tbsolutions.asf.policymanager.sa.RestrictionInfo,
com.tbsolutions.asf.policymanager.sa.CertTypeInfo"
contentType="text/html; charset=iso-8859-1"%>
•
Creación de los objetos implicados en la invocación (axis):
Service service = new Service();
Call call
= (Call) service.createCall();
•
Establecimiento de la URL del Web Service y el método a invocar:
call.setTargetEndpointAddress(
new java.net.URL(“http://localhost:8080/asf/services/PolicyManager”) );
call.setOperationName("getValidCAsSignS");
•
Establecimiento de parámetros:
call.addParameter("applicationID", XMLType.XSD_STRING, ParameterMode.IN);
call.addParameter("operationID", XMLType.XSD_STRING, ParameterMode.IN);
call.addParameter("invokingApp", XMLType.XSD_STRING, ParameterMode.IN);
Título:
Revisión:
Fecha:
Manual de integración de ASF
1.4
junio de 2006
14
•
Información para la serialización:
QName
qcaor
=
new
QName(
"urn:jfactory",
"CertAppOperationRestrictionsInfoSet" );
call.registerTypeMapping(CertAppOperationRestrictionsInfoSet.class, qcaor,
new
org.apache.axis.encoding.ser.BeanSerializerFactory(CertAppOperationRestric
tionsInfoSet.class, qcaor),
new
org.apache.axis.encoding.ser.BeanDeserializerFactory(CertAppOperationRestr
ictionsInfoSet.class, qcaor));
QName
qcaor2
=
new
QName(
"urn:jfactory",
"CertAppOperationRestrictionsInfo" );
call.registerTypeMapping(CertAppOperationRestrictionsInfo.class, qcaor2,
new
org.apache.axis.encoding.ser.BeanSerializerFactory(CertAppOperationRestric
tionsInfo.class,
qcaor2),
new
org.apache.axis.encoding.ser.BeanDeserializerFactory(CertAppOperationRestr
ictionsInfo.class, qcaor2
QName qr
= new QName( "urn:jfactory", "RestrictionInfo" );
call.registerTypeMapping(RestrictionInfo.class, qr,
new
org.apache.axis.encoding.ser.BeanSerializerFactory(RestrictionInfo.class,
qr),
new
org.apache.axis.encoding.ser.BeanDeserializerFactory(RestrictionInfo.class
, qr));
QName qcti
= new QName( "urn:jfactory", "CertTypeInfo" );
call.registerTypeMapping(CertTypeInfo.class, qcti,
new
org.apache.axis.encoding.ser.BeanSerializerFactory(CertTypeInfo.class,
qcti),
new
org.apache.axis.encoding.ser.BeanDeserializerFactory(CertTypeInfo.class,
qcti));
QName qri
= new QName( "urn:jfactory", "ResultInfo" );
call.registerTypeMapping(ResultInfo.class, qri,
new
org.apache.axis.encoding.ser.BeanSerializerFactory(ResultInfo.class,
qri),
new
org.apache.axis.encoding.ser.BeanDeserializerFactory(ResultInfo.class,
qri));
Título:
Revisión:
Fecha:
Manual de integración de ASF
1.4
junio de 2006
15
•
Establecimiento del valor de retorno:
call.setReturnType( qcaor );
•
Invocación:
String applicationID = “1”;
String operationID = “1”;
String invokingApp = “1”;
CertAppOperationRestrictionsInfoSet listaCAs =
(CertAppOperationRestrictionsInfoSet) call.invoke(
new Object[]{applicationID, operationID, invokingApp} );
Invocación Java a Web Services de ASF con axis:
•
Los parámetros se mandan siempre como objetos.
•
El valor de retorno es siempre un objeto.
•
Los tipos básicos se serializan automáticamente:
o Tipos numéricos: int / Integer, long / Long, etc.
o Cadenas de caracteres
o Arrays
o Fechas
o …
•
Axis serializa de forma automática los Java Beans, con tal que se
le indiquen las clases a serializar
QName qr
= new QName( "urn:jfactory", "RestrictionInfo" );
call.registerTypeMapping(RestrictionInfo.class, qr,
new
org.apache.axis.encoding.ser.BeanSerializerFactory(RestrictionInfo.class,
qr),
new
org.apache.axis.encoding.ser.BeanDeserializerFactory(RestrictionInfo.class
, qr));
Título:
Revisión:
Fecha:
Manual de integración de ASF
1.4
junio de 2006
16
•
Todos los Web Services de ASF utilizan tipos básicos o Java
Beans (Info’s).
2.3.2_
Ejemplo de invocación .NET (VB.NET) a Web
Services de ASF
•
Creación de estructuras de datos análogas a las enviadas por ASF
Namespace Types
…………
<System.Xml.Serialization.SoapTypeAttribute("ResultInfo",
"urn:jfactory")> _
Public Class ResultInfo
'<remarks/>
Public [error] As Boolean
'<remarks/>
Public errorPage As String
'<remarks/>
Public message As String
'<remarks/>
Public subCode As String
End Class
…………
End Namespace
•
Imports
Imports
Imports
Imports
Imports
Imports
Creación de clase de acceso al Web Service:
System
System.ComponentModel
System.Diagnostics
System.Web.Services
System.Web.Services.Protocols
System.Xml.Serialization
Namespace X509Validator
<System.Diagnostics.DebuggerStepThroughAttribute(), _
System.ComponentModel.DesignerCategoryAttribute("code"), _
System.Web.Services.WebServiceBindingAttribute(
Name:="X509ValidatorSoapBinding", [Namespace]:="X509Validator"), _
System.Xml.Serialization.SoapIncludeAttribute(GetType(Types.InfoAccessor))> _
Public Class X509ValidatorService Inherits
System.Web.Services.Protocols.SoapHttpClientProtocol
………
End Class
End Namespace
Título:
Revisión:
Fecha:
Manual de integración de ASF
1.4
junio de 2006
17
•
En la clase creada, establecimiento de la URL del Web Service :
Public Sub New()
MyBase.New()
Me.Url = "http://localhost:8080/asf/services/X509Validator"
End Sub
•
Creación de métodos para cada método del Web Service:
<System.Web.Services.Protocols.SoapRpcMethodAttribute("",
RequestNamespace:="X509Validator", ResponseNamespace:="X509Validator")> _
Public Function validateRemote(ByVal in0 As Types.ParamsX509Info) As
<System.Xml.Serialization.SoapElementAttribute("validateRemoteReturn")>
Types.ResultVerifyCertInfo
Dim results() As Object =
Me.Invoke("validateRemote", New Object() {in0})
Return CType(results(0), Types.ResultVerifyCertInfo)
End Function
Private Function BeginvalidateRemote(ByVal in0 As Types.ParamsX509Info,
ByVal callback As System.AsyncCallback, ByVal asyncState As Object)
As System.IAsyncResult
Return Me.BeginInvoke("validateRemote", New Object() {in0},
callback, asyncState)
End Function
Private Function EndvalidateRemote(ByVal asyncResult As
System.IAsyncResult) As Types.ResultVerifyCertInfo
Dim results() As Object = Me.EndInvoke(asyncResult)
Return CType(results(0), Types.ResultVerifyCertInfo)
End Function
Invocación .NET a Web Services de ASF:
Título:
Revisión:
Fecha:
•
El entorno de desarrollo Visual Studio .NET ofrece un Wizard que
facilita el desarrollo de invocaciones a Web Services.
•
Indicando la URL del fichero WSDL con la descripción del Web
Service, genera el código de las invocaciones y las clases y
estructuras de datos necesarias.
•
El Wizard genera código redundante => es conveniente repasar el
código generado.
•
Debido a la arquitectura que utiliza ASF, todos los parámetros de
los objetos usados como parámetros y valores de retorno (Info’s)
están replicados. Existe el [parámetro] y el correspondiente
[parámetro]Object.
Manual de integración de ASF
1.4
junio de 2006
18
•
Cuando se invoca desde un lenguaje distinto de J2EE, deben
rellenarse ambos campos, [parámetro] y [parámetro]Object, o bien
eliminar el [parámetro] en el Info equivalente generado, y dejar
sólo los parámetros Object. Esta segunda opción es más eficiente,
ya que evita enviar información duplicada, pero en lenguajes como
PowerBuilder no funciona correctamente.
•
La integración directa con los Web Services de ASF obliga a las
aplicaciones cliente a implementar toda la lógica de invocación a
Web Services.
•
Además, en caso de ser necesaria la firma de las invocaciones,
obliga a las aplicaciones a realizar las firmas.
•
ASF dispone de un agente de seguridad que facilita la integración
de aplicaciones cliente J2EE.
•
Dicho agente oculta la complejidad de las invocaciones Web
Services y ofrece un sencillo API.
•
Las aplicaciones cliente simplemente debe importar la librería que
contiene el agente de seguridad, e invocar a funciones del API.
•
El agente de seguridad, además, se encarga de firmar las
invocaciones si así se le indica.
Los pasos a seguir para invocar a ASF a través del agente de seguridad
están descritos en el documento TBS_ASFv3.5_Manual de integración
Agente de seguridad_20060222_v1.0.doc.
Título:
Revisión:
Fecha:
Manual de integración de ASF
1.4
junio de 2006
19
2.3.3_
Invocaciones locales a los Web Services de ASF
Los módulos que publican Web Services pueden ser accedidos también a
través de invocaciones locales. En ese caso, las aplicaciones cliente
simplemente deben importar las clases a utilizar, e invocar a funciones del API.
La funcionalidad es la misma que si el acceso es a través de Web Services,
salvo el control de acceso. No se puede restringir el acceso por IP ni firmando
las invocaciones, pero el acceso es más eficiente.
Los pasos a seguir para invocar a ASF a través de invocaciones locales son los
siguientes:
•
ASF debe residir en la misma máquina que la aplicación que va a
invocarlo.
•
La aplicación invocante debe incluir en su CLASSPATH todas las
librerías y ficheros de propiedades (carpeta propertyFiles) de ASF
(carpetas WEB-INF/lib y WEB-INF/classes).
•
Crear el objeto de interfaz del módulo que desea invocar (paquete
webservice del módulo a invocar).
•
Realizar la invocación.
Ejemplo:
•
Inclusión de las librerías y ficheros de propiedades (carpeta
propertyFiles) de ASF dentro del CLASSPATH de la aplicación
cliente.
•
Importar la clase webservice y las clases de asf_data.jar implicadas en
la invocación:
<%@ page import = " jfactory.exchange.ResultInfo,
java.util.ArrayList,
com.tbsolutions.asf.demo.util.Util,
com.tbsolutions.asf.signatureserver.sa.ResultSignInfo,
com.tbsolutions.asf.x509validator.sa.ResultVerifyCertInfo,
com.tbsolutions.asf.signatureserver.sa.ParamsSignInfo,
com.tbsolutions.asf.util.Constants,
com.tbsolutions.asf.signatureserver.webservice.SignatureServer"
contentType="text/html; charset=iso-8859-1"%>
Título:
Revisión:
Fecha:
Manual de integración de ASF
1.4
junio de 2006
20
•
Creación del objeto webservice que desea invocar
SignatureServer signatureServer = new SignatureServer();
•
Invocación:
ParamsSignInfo params = new ParamsSignInfo();
params.setApplicationId("1");
params.setOperationTypeId("2");
params.setDetached(false);
……………….
ResultSignInfo result=signatureServer.signS(params,"1");
Título:
Revisión:
Fecha:
Manual de integración de ASF
1.4
junio de 2006
21
2.3.4_
Integración del Módulo Gestor de Políticas
(PolicyManager)
La información completa de los métodos disponibles en este módulo está
recogida en la documentación en formato javadoc.
2.3.5_
Integración del Módulo de Validación de
Certificados (X509Validator)
La información completa de los métodos disponibles en este módulo está
recogida en la documentación en formato javadoc.
2.3.6_
Integración del Módulo Servidor de Firmas
(SignatureServer)
La información completa de los métodos disponibles en este módulo está
recogida en la documentación en formato javadoc.
2.3.7_
Integración del Módulo Servidor de Cifrado
(EncryptionServer)
La información completa de los métodos disponibles en este módulo está
recogida en la documentación en formato javadoc.
2.3.8_
Integración del Módulo TimeStampClient
La información completa de los métodos disponibles en este módulo está
recogida en la documentación en formato javadoc.
2.3.9_
Integración del Módulo NonRepudiationService
La información completa de los métodos disponibles en este módulo está
recogida en la documentación en formato javadoc.
Título:
Revisión:
Fecha:
Manual de integración de ASF
1.4
junio de 2006
22
2.4_
Integracion de Módulos sin Web Services
2.4.1_
Integración con el módulo TimeStampServer
La integración con este módulo viene especificada por el RFC 3161. Las
peticiones y respuestas deben codificarse siguiendo la normativa DER
específica para la sintaxis ASN.1.
De entre los posibles métodos de transporte definidos por el RFC se ha
implementado el método basado en HTTP (HyperText Transfer Protocol).
Este protocolo define dos objetos MIME para ser intercambiados:
Content-Type: application/timestamp-query
<<the ASN.1 DER-encoded Time-Stamp Request message>>
Content-Type: application/timestamp-reply
<<the ASN.1 DER-encoded Time-Stamp Response message>>
2.4.2_
Integración con el módulo OCSPResponder
La integración con este módulo viene especificada por el RFC 2560.
Título:
Revisión:
Fecha:
Manual de integración de ASF
1.4
junio de 2006
23
Descargar