Firmar y certificar documentos digitalmente digitally-signing-and-certifying-documents
Acerca del servicio de firma
El servicio Signature permite que su organización proteja la seguridad y la privacidad de los documentos de Adobe PDF que distribuye y recibe. Este servicio utiliza firmas digitales y certificación para garantizar que solo los destinatarios objetivo puedan modificar los documentos. Dado que las características de seguridad se aplican al documento en sí, el documento sigue siendo seguro y controlado durante todo su ciclo de vida. Un documento permanece seguro más allá del cortafuegos, cuando se descarga sin conexión y cuando se envía de nuevo a su organización.
Nombres de campos de firma
Algunas operaciones del servicio de firma requieren que especifique el nombre del campo de firma en el que se realiza una operación. Por ejemplo, al firmar un documento de PDF, se especifica el nombre del campo de firma que se va a firmar. Supongamos que el nombre completo de un campo de firma es form1[0].Form1[0].SignatureField1[0]
. Puede especificar SignatureField1[0]
en lugar de form1[0].Form1[0].SignatureField1[0]
.
A veces, un conflicto hace que el servicio de firma firme firme (o realice otra operación que requiera el nombre del campo de firma) el campo incorrecto. Este conflicto es el resultado del nombre SignatureField1[0]
aparece en dos o más lugares del mismo documento de PDF. Por ejemplo, considere un documento de PDF que contenga dos campos de firma llamados form1[0].Form1[0].SignatureField1[0]
y form1[0].Form1[0].SubForm1[0].SignatureField1[0]
y especifique SignatureField1[0]
. En este caso, el servicio de firma firma firma el primer campo de firma que encuentra mientras se iteran todos los campos de firma del documento.
Si hay varios campos de firma ubicados dentro de un documento de PDF, se recomienda especificar los nombres completos de los campos de firma. Es decir, especifique form1[0].Form1[0].SignatureField1[0]
en lugar de SignatureField1[0]
.
Puede realizar estas tareas mediante el servicio de firma:
- Agregue y elimine campos de firma digital a un documento de PDF. (Consulte Adición de campos de firma.)
- Recupere los nombres de los campos de firma ubicados en un documento de PDF. (Consulte Recuperación de nombres de campos de firma.)
- Modificar campos de firma. (Consulte Modificación de campos de firma.)
- Firme digitalmente documentos PDF. (Consulte Firma digital de documentos PDF.)
- Certificar documentos del PDF. (Consulte Certificación de documentos del PDF.)
- Valide las firmas digitales ubicadas en un documento de PDF. (Consulte Verificación de firmas digitales.)
- Valide todas las firmas digitales ubicadas en un documento de PDF. (Consulte Verificación de varias firmas digitales.)
- Eliminar una firma digital de un campo de firma. (Consulte Eliminación de firmas digitales.)
Adición de campos de firma adding-signature-fields
Las firmas digitales aparecen en los campos de firma, que son campos de formulario que contienen una representación gráfica de la firma. Los campos de firma pueden ser visibles o invisibles. Los firmantes pueden utilizar un campo de firma preexistente o se puede agregar un campo de firma mediante programación. En cualquier caso, el campo de firma debe existir antes de que se pueda firmar un documento PDF.
Puede agregar mediante programación un campo de firma mediante la API de Java del servicio de firma o la API del servicio web de firma. Puede agregar más de un campo de firma a un documento de PDF; sin embargo, cada nombre de campo de firma debe ser único.
Resumen de los pasos summary-of-steps
Para agregar un campo de firma a un documento de PDF, realice las siguientes tareas:
- Incluir archivos de proyecto.
- Cree un cliente de firma.
- Obtenga un documento PDF al que se agrega un campo de firma.
- Agregue un campo de firma.
- Guarde el documento de PDF como archivo de PDF.
Incluir archivos de proyecto
Incluya los archivos necesarios en el proyecto de desarrollo. Si está creando una aplicación cliente mediante Java, incluya los archivos JAR necesarios. Si utiliza servicios web, asegúrese de incluir los archivos proxy.
Los siguientes archivos JAR deben agregarse a la ruta de clase del proyecto:
- adobe-livecycle-client.jar
- adobe-usermanager-client.jar
- adobe-signatures-client.jar
- adobe-Utilities.jar (obligatorio si AEM Forms está implementado en JBoss)
- jbossall-client.jar (requerido si AEM Forms está implementado en JBoss)
Crear un cliente de firma
Para poder realizar una operación de servicio de firma mediante programación, debe crear un cliente de servicio de firma.
Obtener un documento del PDF al que se agrega un campo de firma
Debe obtener un documento de PDF al que se agregue un campo de firma.
Añadir un campo de firma
Para agregar correctamente un campo de firma a un documento de PDF, se especifican valores de coordenadas que identifican la ubicación del campo de firma. (Si agrega un campo de firma invisible, estos valores no son obligatorios). Además, puede especificar qué campos del documento del PDF están bloqueados después de aplicar una firma al campo de firma.
Guarde el documento del PDF como archivo del PDF
Una vez que el servicio de firma agrega un campo de firma al documento del PDF, puede guardar el documento como archivo del PDF para que los usuarios puedan abrirlo en Acrobat o Adobe Reader.
Consulte también
Inclusión de archivos de biblioteca Java de AEM Forms
Configuración de las propiedades de conexión
Firma digital de documentos PDF
Adición de campos de firma mediante la API de Java add-signature-fields-using-the-java-api
Agregue un campo de firma utilizando la API de firma (Java):
-
Incluir archivos de proyecto
Incluya archivos JAR del cliente, como adobe-signatures-client.jar, en la ruta de clase de su proyecto Java.
-
Crear un cliente de firma
- Cree un
ServiceClientFactory
objeto que contiene propiedades de conexión. - Cree un
SignatureServiceClient
usando su constructor y pasando elServiceClientFactory
objeto.
- Cree un
-
Obtener un documento del PDF al que se agrega un campo de firma
- Cree un
java.io.FileInputStream
objeto que representa el documento PDF al que se agrega un campo de firma empleando su constructor y pasando un valor de cadena que especifica la ubicación del documento PDF. - Cree un
com.adobe.idp.Document
usando su constructor y pasando eljava.io.FileInputStream
objeto.
- Cree un
-
Añadir un campo de firma
-
Cree un
PositionRectangle
objeto que especifica la ubicación del campo de firma utilizando su constructor. Dentro del constructor, especifique valores de coordenadas. -
Si lo desea, cree un
FieldMDPOptions
objeto que especifica los campos que están bloqueados cuando se aplica una firma digital al campo de firma. -
Agregue un campo de firma a un documento de PDF invocando la variable
SignatureServiceClient
del objetoaddSignatureField
y pasando los siguientes valores:- A
com.adobe.idp
.Document
objeto que representa el documento del PDF al que se agrega un campo de firma. - Un valor de cadena que especifica el nombre del campo de firma.
- A
java.lang.Integer
que representa el número de página al que se agrega un campo de firma. - A
PositionRectangle
objeto que especifica la ubicación del campo de firma. - A
FieldMDPOptions
objeto que especifica los campos del documento del PDF que se bloquean después de aplicar una firma digital al campo de firma. Este valor del parámetro es opcional y puede pasarnull
.
- A
-
A
PDFSeedValueOptions
objeto que especifica varios valores de tiempo de ejecución. Este valor del parámetro es opcional y puede pasarnull
.La variable
addSignatureField
el método devuelve uncom.adobe.idp
.Document
objeto que representa un documento de PDF que contiene un campo de firma.
note note NOTE Puede invocar la variable SignatureServiceClient
del objetoaddInvisibleSignatureField
para añadir un campo de firma invisible. -
-
Guarde el documento del PDF como archivo del PDF
- Cree un
java.io.File
y asegúrese de que la extensión de archivo es .pdf. - Invocar el
com.adobe.idp
.Document
del objetocopyToFile
para copiar el contenido delDocument
al archivo. Asegúrese de usar la variablecom.adobe.idp
.Document
objeto devuelto por eladdSignatureField
método.
- Cree un
Consulte también
Inicio rápido de la API del servicio de firma
Adición de campos de firma mediante la API de servicio web add-signature-fields-using-the-web-service-api
Para añadir un campo de firma mediante la API de firma (servicio web):
-
Incluir archivos de proyecto
Cree un proyecto de Microsoft .NET que utilice MTOM. Asegúrese de utilizar la siguiente definición WSDL:
http://localhost:8080/soap/services/SignatureService?WSDL&lc_version=9.0.1
.note note NOTE Reemplazar localhost
con la dirección IP del servidor que hospeda AEM Forms. -
Crear un cliente de firma
-
Cree un
SignatureServiceClient
usando su constructor predeterminado. -
Cree un
SignatureServiceClient.Endpoint.Address
usando la variableSystem.ServiceModel.EndpointAddress
constructor. Pase un valor de cadena que especifique el WSDL al servicio de AEM Forms (por ejemplo,http://localhost:8080/soap/services/SignatureService?WSDL
). No es necesario que use la variablelc_version
atributo. Este atributo se utiliza al crear una referencia de servicio). -
Cree un
System.ServiceModel.BasicHttpBinding
obteniendo el valor deSignatureServiceClient.Endpoint.Binding
campo . Conversión del valor devuelto aBasicHttpBinding
. -
Configure las variables
System.ServiceModel.BasicHttpBinding
del objetoMessageEncoding
campo aWSMessageEncoding.Mtom
. Este valor garantiza que se utilice MTOM. -
Habilite la autenticación HTTP básica realizando las siguientes tareas:
- Asignar el nombre de usuario de los formularios AEM al campo
SignatureServiceClient.ClientCredentials.UserName.UserName
. - Asignar el valor de contraseña correspondiente al campo
SignatureServiceClient.ClientCredentials.UserName.Password
. - Asignar el valor constante
HttpClientCredentialType.Basic
al campoBasicHttpBindingSecurity.Transport.ClientCredentialType
. - Asignar el valor constante
BasicHttpSecurityMode.TransportCredentialOnly
al campoBasicHttpBindingSecurity.Security.Mode
.
- Asignar el nombre de usuario de los formularios AEM al campo
-
-
Obtener un documento del PDF al que se agrega un campo de firma
- Cree un
BLOB
usando su constructor. La variableBLOB
se utiliza para almacenar el documento del PDF que contendrá un campo de firma. - Cree un
System.IO.FileStream
invocando su constructor y pasando un valor de cadena que representa la ubicación del archivo del documento PDF y el modo en que se abre el archivo. - Cree una matriz de bytes que almacene el contenido del
System.IO.FileStream
objeto. Puede determinar el tamaño de la matriz de bytes obteniendo la variableSystem.IO.FileStream
del objetoLength
propiedad. - Rellene la matriz de bytes con los datos de flujo invocando la variable
System.IO.FileStream
del objetoRead
y pasando la matriz de bytes, la posición inicial y la longitud de flujo para leer. - Rellene el
BLOB
asignando suMTOM
con el contenido de la matriz de bytes.
- Cree un
-
Añadir un campo de firma
Agregue un campo de firma al documento del PDF invocando la variable
SignatureServiceClient
del objetoaddSignatureField
y pasando los siguientes valores:- A
BLOB
objeto que representa el documento del PDF al que se agrega un campo de firma. - Valor de cadena que especifica el nombre del campo de firma.
- Un valor entero que representa el número de página al que se agrega un campo de firma.
- A
PositionRect
objeto que especifica la ubicación del campo de firma. - A
FieldMDPOptions
objeto que especifica los campos del documento del PDF que se bloquean después de aplicar una firma digital al campo de firma. Este valor del parámetro es opcional y puede pasarnull
. - A
PDFSeedValueOptions
objeto que especifica varios valores de tiempo de ejecución. Este valor del parámetro es opcional y puede pasarnull
.
La variable
addSignatureField
el método devuelve unBLOB
objeto que representa un documento de PDF que contiene un campo de firma. - A
-
Guarde el documento del PDF como archivo del PDF
- Cree un
System.IO.FileStream
invocando su constructor y pasando un valor de cadena que representa la ubicación del archivo del documento PDF que contendrá el campo de firma y el modo en que se abre el archivo. - Cree una matriz de bytes que almacene el contenido del
BLOB
objeto devuelto por eladdSignatureField
método. Rellene la matriz de bytes obteniendo el valor de la variableBLOB
del objetobinaryData
miembro de datos. - Cree un
System.IO.BinaryWriter
invocando su constructor y pasando elSystem.IO.FileStream
objeto. - Escriba el contenido de la matriz de bytes en un archivo de PDF invocando la variable
System.IO.BinaryWriter
del objetoWrite
y pasando la matriz de bytes.
- Cree un
Consulte también
Invocación de AEM Forms mediante MTOM
Invocación de AEM Forms mediante SwaRef
Recuperación de nombres de campos de firma retrieving-signature-field-names
Puede recuperar los nombres de todos los campos de firma que se encuentran en un documento PDF que desee firmar o certificar. Si no está seguro de los nombres de los campos de firma que se encuentran en un documento PDF o desea verificarlos, puede recuperarlos mediante programación. El servicio Firma devuelve el nombre completo del campo de firma, como form1[0].grantApplication[0].page1[0].SignatureField1[0]
.
Resumen de los pasos summary_of_steps-1
Para recuperar los nombres de los campos de firma, realice las siguientes tareas:
- Incluir archivos de proyecto.
- Cree un cliente de firma.
- Obtenga el documento del PDF que contiene campos de firma.
- Recupere los nombres de los campos de firma.
Incluir archivos de proyecto
Incluya los archivos necesarios en el proyecto de desarrollo. Si está creando una aplicación cliente mediante Java, incluya los archivos JAR necesarios. Si utiliza servicios web, asegúrese de incluir los archivos proxy.
Los siguientes archivos JAR deben agregarse a la ruta de clase del proyecto:
- adobe-livecycle-client.jar
- adobe-usermanager-client.jar
- adobe-signatures-client.jar
- adobe-Utilities.jar (obligatorio si AEM Forms está implementado en JBoss)
- jbossall-client.jar (requerido si AEM Forms está implementado en JBoss)
Para obtener información sobre la ubicación de estos archivos JAR, consulte Inclusión de archivos de biblioteca Java de AEM Forms.
Crear un cliente de firma
Para poder realizar una operación de servicio de firma mediante programación, debe crear un cliente de servicio de firma.
Obtener el documento del PDF que contiene campos de firma
Recupere un documento de PDF que contenga campos de firma.
Recuperar los nombres de los campos de firma
Puede recuperar los nombres de los campos de firma después de recuperar un documento de PDF que contenga uno o más campos de firma.
Consulte también
Recuperar nombres de campos de firma mediante la API de Java
Recuperar el campo de firma mediante la API de servicio web
Inclusión de archivos de biblioteca Java de AEM Forms
Configuración de las propiedades de conexión
Recuperar nombres de campos de firma mediante la API de Java retrieve-signature-field-names-using-the-java-api
Recupere los nombres de los campos de firma utilizando la API de firma (Java):
-
Incluir archivos de proyecto
Incluya archivos JAR del cliente, como adobe-signatures-client.jar, en la ruta de clase de su proyecto Java.
-
Crear un cliente de firma
- Cree un
ServiceClientFactory
objeto que contiene propiedades de conexión. - Cree un
SignatureServiceClient
usando su constructor y pasando elServiceClientFactory
objeto.
- Cree un
-
Obtener el documento del PDF que contiene campos de firma
- Cree un
java.io.FileInputStream
objeto que representa el documento de PDF que contiene campos de firma utilizando su constructor y pasando un valor de cadena que especifica la ubicación del documento de PDF. - Cree un
com.adobe.idp.Document
usando su constructor y pasando eljava.io.FileInputStream
objeto.
- Cree un
-
Recuperar los nombres de los campos de firma
- Recupere los nombres de los campos de firma invocando la variable
SignatureServiceClient
del objetogetSignatureFieldList
y pasando elcom.adobe.idp.Document
objeto que contiene el documento del PDF que contiene campos de firma. Este método devuelve unjava.util.List
objeto, en el que cada elemento contiene unPDFSignatureField
objeto. Con este objeto, puede obtener información adicional sobre un campo de firma, como si está visible. - Iterar a través de la variable
java.util.List
para determinar si hay nombres de campo de firma. Para cada campo de firma del documento del PDF, puede obtener unaPDFSignatureField
objeto. Para obtener el nombre del campo de firma, invoque la variablePDFSignatureField
del objetogetName
método. Este método devuelve un valor de cadena que especifica el nombre del campo de firma.
- Recupere los nombres de los campos de firma invocando la variable
Consulte también
Recuperación de nombres de campos de firma
Inicio rápido (modo SOAP): Recuperación de nombres de campos de firma mediante la API de Java
Inclusión de archivos de biblioteca Java de AEM Forms
Configuración de las propiedades de conexión
Recuperar el campo de firma mediante la API de servicio web retrieve-signature-field-using-the-web-service-api
Recupere los nombres de los campos de firma mediante la API de firma (servicio web):
-
Incluir archivos de proyecto
Cree un proyecto de Microsoft .NET que utilice MTOM. Asegúrese de utilizar la siguiente definición WSDL:
http://localhost:8080/soap/services/SignatureService?WSDL&lc_version=9.0.1
.note note NOTE Reemplazar localhost
con la dirección IP del servidor que hospeda AEM Forms. -
Crear un cliente de firma
-
Cree un
SignatureServiceClient
usando su constructor predeterminado. -
Cree un
SignatureServiceClient.Endpoint.Address
usando la variableSystem.ServiceModel.EndpointAddress
constructor. Pase un valor de cadena que especifique el WSDL al servicio de AEM Forms (por ejemplo,http://localhost:8080/soap/services/SignatureService?WSDL
). No es necesario que use la variablelc_version
atributo. Este atributo se utiliza al crear una referencia de servicio). -
Cree un
System.ServiceModel.BasicHttpBinding
obteniendo el valor deSignatureServiceClient.Endpoint.Binding
campo . Conversión del valor devuelto aBasicHttpBinding
. -
Configure las variables
System.ServiceModel.BasicHttpBinding
del objetoMessageEncoding
campo aWSMessageEncoding.Mtom
. Este valor garantiza que se utilice MTOM. -
Habilite la autenticación HTTP básica realizando las siguientes tareas:
- Asignar el nombre de usuario de los formularios AEM al campo
SignatureServiceClient.ClientCredentials.UserName.UserName
. - Asignar el valor de contraseña correspondiente al campo
SignatureServiceClient.ClientCredentials.UserName.Password
. - Asignar el valor constante
HttpClientCredentialType.Basic
al campoBasicHttpBindingSecurity.Transport.ClientCredentialType
. - Asignar el valor constante
BasicHttpSecurityMode.TransportCredentialOnly
al campoBasicHttpBindingSecurity.Security.Mode
.
- Asignar el nombre de usuario de los formularios AEM al campo
-
-
Obtener el documento del PDF que contiene campos de firma
- Cree un
BLOB
usando su constructor. La variableBLOB
se utiliza para almacenar el documento del PDF que contiene campos de firma. - Cree un
System.IO.FileStream
invocando su constructor y pasando un valor de cadena que representa la ubicación del archivo del documento PDF y el modo en que se abre el archivo. - Cree una matriz de bytes que almacene el contenido del
System.IO.FileStream
objeto. Puede determinar el tamaño de la matriz de bytes obteniendo la variableSystem.IO.FileStream
del objetoLength
propiedad. - Rellene la matriz de bytes con los datos de flujo invocando la variable
System.IO.FileStream
del objetoRead
y pasando la matriz de bytes, la posición inicial y la longitud de flujo para leer. - Rellene el
BLOB
asignando suMTOM
campo el contenido de la matriz de bytes.
- Cree un
-
Recuperar los nombres de los campos de firma
- Recupere los nombres de los campos de firma invocando
SignatureServiceClient
del objetogetSignatureFieldList
y pasando elBLOB
objeto que contiene el documento del PDF que contiene campos de firma. Este método devuelve unMyArrayOfPDFSignatureField
objeto de colección donde cada elemento contiene unPDFSignatureField
objeto. - Iterar a través de la variable
MyArrayOfPDFSignatureField
para determinar si hay nombres de campo de firma. Para cada campo de firma del documento del PDF, puede obtener unaPDFSignatureField
objeto. Para obtener el nombre del campo de firma, invoque la variablePDFSignatureField
del objetogetName
método. Este método devuelve un valor de cadena que especifica el nombre del campo de firma.
- Recupere los nombres de los campos de firma invocando
Consulte también
Recuperación de nombres de campos de firma
Invocación de AEM Forms mediante MTOM
Invocación de AEM Forms mediante SwaRef
Modificación de campos de firma modifying-signature-fields
Puede modificar los campos de firma que se encuentran en un documento de PDF mediante la API de Java y la API de servicio web. La modificación de un campo de firma implica la manipulación de sus valores del diccionario de bloqueo de campos de firma o valores del diccionario de valores de semillas.
A diccionario de bloqueo de campo especifica una lista de campos que están bloqueados cuando se firma el campo de firma. Un campo bloqueado impide que los usuarios realicen cambios en el campo. A diccionario de valores semilla contiene información de restricción que se utiliza en el momento en que se aplica la firma. Por ejemplo, puede cambiar los permisos que controlan las acciones que se pueden producir sin invalidar una firma.
Si modifica un campo de firma existente, puede realizar cambios en el documento del PDF para reflejar los cambios en los requisitos comerciales. Por ejemplo, un nuevo requisito comercial puede requerir el bloqueo de todos los campos de documento después de firmar el documento.
En esta sección se explica cómo modificar un campo de firma mediante la modificación de los valores del diccionario de bloqueo de campos y del diccionario de valores semilla. Los cambios realizados en el diccionario de bloqueo de campos de firma hacen que todos los campos del documento del PDF se bloqueen cuando se firma un campo de firma. Los cambios realizados en el diccionario de valores sembrados prohíben tipos específicos de cambios en el documento.
Resumen de los pasos summary_of_steps-2
Para modificar los campos de firma ubicados en un documento de PDF, realice las siguientes tareas:
- Incluir archivos de proyecto.
- Cree un cliente de firma.
- Obtenga el documento del PDF que contiene el campo de firma que desea modificar.
- Establezca los valores del diccionario.
- Modifique el campo de firma.
- Guarde el documento de PDF como archivo de PDF.
Incluir archivos de proyecto
Incluya los archivos necesarios en el proyecto de desarrollo. Si está creando una aplicación cliente mediante Java, incluya los archivos JAR necesarios. Si utiliza servicios web, asegúrese de incluir los archivos proxy.
Los siguientes archivos JAR deben agregarse a la ruta de clase del proyecto:
- adobe-livecycle-client.jar
- adobe-usermanager-client.jar
- adobe-signatures-client.jar
- adobe-Utilities.jar (obligatorio si AEM Forms está implementado en JBoss)
- jbossall-client.jar (requerido si AEM Forms está implementado en JBoss)
Para obtener información sobre la ubicación de estos archivos JAR, consulte Inclusión de archivos de biblioteca Java de LiveCycle.
Crear un cliente de firma
Para poder realizar una operación de servicio de firma mediante programación, debe crear un cliente de servicio de firma.
Obtener el documento del PDF que contiene el campo de firma que se va a modificar
Recupere un documento de PDF que contenga el campo de firma que desea modificar.
Definir valores de diccionario
Para modificar un campo de firma, asigne valores a su diccionario de bloqueo de campo o diccionario de valores semilla. La especificación de los valores del diccionario de bloqueo de campos de firma implica la especificación de los campos de documento de PDF que están bloqueados cuando se firma el campo de firma. (Esta sección explica cómo bloquear todos los campos).
Se pueden configurar los siguientes valores de diccionario de valores semilla:
-
Comprobación de revisión: Especifica si la comprobación de revocación se realiza cuando se aplica una firma al campo de firma.
-
Opciones de certificado: Asigna valores al diccionario de valores sembrados de certificados. Antes de especificar las opciones de certificado, se recomienda que se familiarice con un diccionario de valores sembrados de certificado. (Consulte Referencia del PDF.)
-
Opciones de resumen: Asigna los algoritmos de compendio que se utilizan para la firma. Los valores válidos son SHA1, SHA256, SHA384, SHA512 y RIPEMD160.
-
Filtro: Especifica el filtro que se utiliza con el campo de firma. Por ejemplo, puede utilizar el filtro Adobe.PPKLite . (Consulte Referencia del PDF.)
-
Opciones de marca: Especifica los valores de marca asociados a este campo de firma. Un valor de 1 significa que un firmante debe utilizar solamente los valores especificados para la entrada. Un valor de 0 significa que se permiten otros valores. Estas son las posiciones de Bit:
- 1 (Filtro): El controlador de firma que se utilizará para firmar el campo de firma
- 2 (Subfiltro): Matriz de nombres que indican codificaciones aceptables para utilizar al firmar
- 3 V): El número mínimo de versión requerido del controlador de firma que se utilizará para firmar el campo de firma
- 4 (Motivos): Matriz de cadenas que especifican posibles motivos para firmar un documento
- 5 (PDFLegalWarnings): Conjunto de cadenas que especifica posibles autenticaciones legales
-
Afirmaciones legales: Cuando un documento está certificado, se analiza automáticamente para detectar tipos específicos de contenido que puedan hacer que el contenido visible de un documento sea ambiguo o engañoso. Por ejemplo, una anotación puede ocultar texto importante para comprender lo que se está certificando. El proceso de digitalización genera advertencias que indican la presencia de este tipo de contenido. También proporciona una explicación adicional del contenido que puede haber generado advertencias.
-
Permisos: Especifica los permisos que se pueden utilizar en un documento de PDF sin invalidar la firma.
-
Razones: Especifica los motivos por los que se debe firmar este documento.
-
Marca de tiempo: Especifica las opciones de marca de hora. Por ejemplo, puede establecer la dirección URL del servidor de marca de tiempo utilizado.
-
Versión: Especifica el número de versión mínimo del controlador de firma que se utilizará para firmar el campo de firma.
Modificación del campo de firma
Después de crear un cliente de servicios de firma, recuperar el documento del PDF que contiene el campo de firma que se va a modificar y establecer los valores del diccionario, puede solicitar al servicio de firma que modifique el campo de firma. A continuación, el servicio de firma devuelve un documento de PDF que contiene el campo de firma modificado. El documento del PDF original no se ve afectado.
Guarde el documento del PDF como archivo del PDF
Guarde el documento PDF que contiene el campo de firma modificado como archivo PDF para que los usuarios puedan abrirlo en Acrobat o Adobe Reader.
Consulte también
Inclusión de archivos de biblioteca Java de AEM Forms
Configuración de las propiedades de conexión
Inicio rápido de la API del servicio de firma
Firma digital de documentos PDF
Modificación de campos de firma mediante la API de Java modify-signature-fields-using-the-java-api
Modifique un campo de firma utilizando la API de firma (Java):
-
Incluir archivos de proyecto
Incluya archivos JAR del cliente, como adobe-signatures-client.jar, en la ruta de clase de su proyecto Java.
-
Crear un cliente de firma
- Cree un
ServiceClientFactory
objeto que contiene propiedades de conexión. - Cree un
SignatureServiceClient
usando su constructor y pasando elServiceClientFactory
objeto.
- Cree un
-
Obtener el documento del PDF que contiene el campo de firma que se va a modificar
- Cree un
java.io.FileInputStream
objeto que representa el documento del PDF que contiene el campo de firma que se va a modificar utilizando su constructor y pasando un valor de cadena que especifica la ubicación del documento del PDF. - Cree un
com.adobe.idp.Document
usando su constructor y pasando eljava.io.FileInputStream
objeto.
- Cree un
-
Definir valores de diccionario
- Cree un
PDFSignatureFieldProperties
usando su constructor. APDFSignatureFieldProperties
el objeto almacena información de diccionario de bloqueo de campos de firma y de diccionario de valores semilla. - Cree un
PDFSeedValueOptionSpec
usando su constructor. Este objeto permite establecer valores de diccionario de valores semilla. - No permitir cambios en el documento del PDF invocando la variable
PDFSeedValueOptionSpec
del objetosetMdpValue
y pasando elMDPPermissions.NoChanges
valor de enumeración. - Cree un
FieldMDPOptionSpec
usando su constructor. Este objeto permite establecer los valores del diccionario de bloqueo de campos de firma. - Bloqueo de todos los campos del documento del PDF invocando la variable
FieldMDPOptionSpec
del objetosetMdpValue
y pasando elFieldMDPAction.ALL
valor de enumeración. - Establezca la información del diccionario de valores semilla invocando la variable
PDFSignatureFieldProperties
del objetosetSeedValue
y pasando elPDFSeedValueOptionSpec
objeto. - Establezca la información del diccionario de bloqueo del campo de firma invocando la variable
PDFSignatureFieldProperties
del objetosetFieldMDP
y pasando elFieldMDPOptionSpec
objeto.
note note NOTE Para ver todos los valores del diccionario de valores sembrados que puede establecer, consulte la PDFSeedValueOptionSpec
referencia de clase. (Consulte Referencia de la API de AEM Forms.) - Cree un
-
Modificación del campo de firma
Modifique el campo de firma invocando la variable
SignatureServiceClient
del objetomodifySignatureField
y pasando los siguientes valores:- La variable
com.adobe.idp.Document
objeto que almacena el documento del PDF que contiene el campo de firma que se va a modificar - Un valor de cadena que especifica el nombre del campo de firma
- La variable
PDFSignatureFieldProperties
objeto que almacena información del diccionario de bloqueo de campos de firma y del diccionario de valores semilla
La variable
modifySignatureField
el método devuelve uncom.adobe.idp.Document
objeto que almacena un documento de PDF que contiene el campo de firma modificado. - La variable
-
Guarde el documento del PDF como archivo del PDF
- Cree un
java.io.File
y asegúrese de que la extensión del nombre de archivo es .pdf. - Invocar el
com.adobe.idp.Document
del objetocopyToFile
para copiar el contenido delcom.adobe.idp.Document
al archivo. Asegúrese de usar la variablecom.adobe.idp.Document
que la variablemodifySignatureField
método devuelto.
- Cree un
Modificación de campos de firma mediante la API de servicio web modify-signature-fields-using-the-web-service-api
Modifique un campo de firma utilizando la API de firma (servicio web):
-
Incluir archivos de proyecto
Cree un proyecto de Microsoft .NET que utilice MTOM. Asegúrese de utilizar la siguiente definición WSDL:
http://localhost:8080/soap/services/SignatureService?WSDL&lc_version=9.0.1
.note note NOTE Reemplazar localhost
con la dirección IP del servidor que hospeda AEM Forms. -
Crear un cliente de firma
-
Cree un
SignatureServiceClient
usando su constructor predeterminado. -
Cree un
SignatureServiceClient.Endpoint.Address
usando la variableSystem.ServiceModel.EndpointAddress
constructor. Pase un valor de cadena que especifique el WSDL al servicio de AEM Forms (por ejemplo,http://localhost:8080/soap/services/SignatureService?WSDL
). No es necesario que use la variablelc_version
atributo. Este atributo se utiliza al crear una referencia de servicio). -
Cree un
System.ServiceModel.BasicHttpBinding
obteniendo el valor deSignatureServiceClient.Endpoint.Binding
campo . Conversión del valor devuelto aBasicHttpBinding
. -
Configure las variables
System.ServiceModel.BasicHttpBinding
del objetoMessageEncoding
campo aWSMessageEncoding.Mtom
. Este valor garantiza que se utilice MTOM. -
Habilite la autenticación HTTP básica realizando las siguientes tareas:
- Asignar el nombre de usuario de los formularios AEM al campo
SignatureServiceClient.ClientCredentials.UserName.UserName
. - Asignar el valor de contraseña correspondiente al campo
SignatureServiceClient.ClientCredentials.UserName.Password
. - Asignar el valor constante
HttpClientCredentialType.Basic
al campoBasicHttpBindingSecurity.Transport.ClientCredentialType
. - Asignar el valor constante
BasicHttpSecurityMode.TransportCredentialOnly
al campoBasicHttpBindingSecurity.Security.Mode
.
- Asignar el nombre de usuario de los formularios AEM al campo
-
-
Obtener el documento del PDF que contiene el campo de firma que se va a modificar
- Cree un
BLOB
usando su constructor. La variableBLOB
se utiliza para almacenar el documento del PDF que contiene el campo de firma que se va a modificar. - Cree un
System.IO.FileStream
invocando su constructor y pasando un valor de cadena que representa la ubicación del archivo del documento PDF y el modo en que se abre el archivo. - Cree una matriz de bytes que almacene el contenido del
System.IO.FileStream
objeto. Puede determinar el tamaño de la matriz de bytes obteniendo la variableSystem.IO.FileStream
del objetoLength
propiedad. - Rellene la matriz de bytes con los datos de flujo invocando la variable
System.IO.FileStream
del objetoRead
y pasando la matriz de bytes, la posición inicial y la longitud de flujo para leer. - Rellene el
BLOB
asignando suMTOM
propiedad del contenido de la matriz de bytes.
- Cree un
-
Definir valores de diccionario
- Cree un
PDFSignatureFieldProperties
usando su constructor. Este objeto almacena el diccionario de bloqueo de campos de firma y la información del diccionario de valores semilla. - Cree un
PDFSeedValueOptionSpec
usando su constructor. Este objeto permite establecer valores de diccionario de valores semilla. - No permitir cambios en el documento del PDF asignando la variable
MDPPermissions.NoChanges
valor de enumeración a la variablePDFSeedValueOptionSpec
del objetomdpValue
miembro de datos. - Cree un
FieldMDPOptionSpec
usando su constructor. Este objeto permite establecer los valores del diccionario de bloqueo de campos de firma. - Bloquee todos los campos del documento del PDF asignando la variable
FieldMDPAction.ALL
valor de enumeración a la variableFieldMDPOptionSpec
del objetomdpValue
miembro de datos. - Configure la información del diccionario del valor de inicialización asignando la variable
PDFSeedValueOptionSpec
alPDFSignatureFieldProperties
del objetoseedValue
miembro de datos. - Configure la información del diccionario de bloqueo del campo de firma asignando la variable
FieldMDPOptionSpec
alPDFSignatureFieldProperties
del objetofieldMDP
miembro de datos.
note note NOTE Para ver todos los valores del diccionario de valores sembrados que puede establecer, consulte la PDFSeedValueOptionSpec
referencia de clase. (Consulte Referencia de la API de AEM Forms). - Cree un
-
Modificación del campo de firma
Modifique el campo de firma invocando la variable
SignatureServiceClient
del objetomodifySignatureField
y pasando los siguientes valores:- La variable
BLOB
objeto que almacena el documento del PDF que contiene el campo de firma que se va a modificar - Un valor de cadena que especifica el nombre del campo de firma
- La variable
PDFSignatureFieldProperties
objeto que almacena información del diccionario de bloqueo de campos de firma y del diccionario de valores semilla
La variable
modifySignatureField
el método devuelve unBLOB
objeto que almacena un documento de PDF que contiene el campo de firma modificado. - La variable
-
Guarde el documento del PDF como archivo del PDF
- Cree un
System.IO.FileStream
invocando su constructor y pasando un valor de cadena que representa la ubicación del archivo del documento PDF que contendrá el campo de firma y el modo en que se abre el archivo. - Cree una matriz de bytes que almacene el contenido del
BLOB
que la variableaddSignatureField
devuelve. Rellene la matriz de bytes obteniendo el valor de la variableBLOB
del objetoMTOM
miembro de datos. - Cree un
System.IO.BinaryWriter
invocando su constructor y pasando elSystem.IO.FileStream
objeto. - Escriba el contenido de la matriz de bytes en un archivo de PDF invocando la variable
System.IO.BinaryWriter
del objetoWrite
y pasando la matriz de bytes.
- Cree un
Consulte también
Invocación de AEM Forms mediante MTOM
Invocación de AEM Forms mediante SwaRef
Firma digital de documentos PDF digitally-signing-pdf-documents
Las firmas digitales se pueden aplicar a documentos PDF para proporcionar cierto nivel de seguridad. Las firmas digitales, como las firmas manuscritas, proporcionan un medio para que los firmantes se identifiquen y hagan declaraciones sobre un documento. La tecnología utilizada para firmar documentos digitalmente ayuda a garantizar que tanto el firmante como los destinatarios tengan una idea clara de lo que se firmó y estén seguros de que el documento no se ha alterado desde que se firmó.
Los documentos PDF se firman mediante tecnología de clave pública. Un firmante tiene dos claves: una clave pública y una clave privada. La clave privada se almacena en las credenciales de un usuario que deben estar disponibles en el momento de la firma. La clave pública se almacena en el certificado del usuario que debe estar disponible para que los destinatarios validen la firma. La información sobre los certificados revocados se encuentra en las listas de revocación de certificados (CRL) y en las respuestas del Protocolo de estado de certificado en línea (OCSP) distribuidas por las autoridades de certificación (CA). La hora de la firma se puede obtener de una fuente de confianza conocida como Autoridad de marca de tiempo.
Puede firmar digitalmente mediante programación documentos PDF. Al firmar digitalmente un documento de PDF, debe hacer referencia a una credencial de seguridad que exista en AEM Forms. La credencial es la clave privada que se utiliza para la firma.
El servicio Signature realiza los siguientes pasos cuando se firma un documento de PDF:
- El servicio de firma recupera las credenciales del Truststore pasando el alias especificado en la solicitud.
- Truststore busca las credenciales especificadas.
- La credencial se devuelve al servicio de firma y se utiliza para firmar el documento. Las credenciales también se almacenan en caché con el alias para solicitudes futuras.
Para obtener información sobre la administración de las credenciales de seguridad, consulte la guía* Instalación e implementación de AEM Forms* para su servidor de aplicaciones.
PDFOperationException
. Para resolver este problema, convierta el archivo XDP a un archivo PDF mediante el servicio PDF Utilidades y, a continuación, pase el archivo PDF convertido a una operación del servicio de firma. (Consulte Uso de utilidades de PDF.)Credencial nShield HSM del cifrado
Cuando se utiliza una credencial nCipher nShield HSM para firmar o certificar un documento PDF, no se puede utilizar la nueva credencial hasta que se reinicie el servidor de aplicaciones J2EE en el que se implementa AEM Forms. Sin embargo, puede establecer un valor de configuración, lo que da como resultado que la operación de firma o certificación funcione sin reiniciar el servidor de aplicaciones J2EE.
Puede añadir el siguiente valor de configuración en el archivo cknfastrc, que se encuentra en /opt/nfast/cknfastrc (o c:\nfast\cknfastrc):
CKNFAST_ASSUME_SINGLE_PROCESS=0
Después de agregar este valor de configuración al archivo cknfastrc, la nueva credencial se puede usar sin reiniciar el servidor de aplicaciones J2EE.
La firma no es de confianza
Al certificar y firmar el mismo documento de PDF, si la firma de certificación no es de confianza, aparece un triángulo amarillo contra la primera firma al abrir el documento de PDF en Acrobat o Adobe Reader. La firma certificadora debe ser de confianza para evitar esta situación.
Firma de documentos que son formularios basados en XFA
Si intenta firmar un formulario basado en XFA mediante la API de servicio de firma, es posible que falten los datos en la variable View
Signed
Version
ubicado en Acrobat. Por ejemplo, considere el siguiente flujo de trabajo:
- Con un archivo XDP creado con Designer, se combina un diseño de formulario que contiene un campo de firma y datos XML que contienen datos de formulario. El servicio Forms se utiliza para generar un documento de PDF interactivo.
- Firma el documento del PDF mediante la API del servicio de firma.
Resumen de los pasos summary_of_steps-3
Para firmar digitalmente un documento de PDF, realice las siguientes tareas:
- Incluir archivos de proyecto.
- Cree un cliente de servicio de firma.
- Obtenga el documento del PDF para firmar.
- Firme el documento del PDF.
- Guarde el documento de PDF firmado como archivo de PDF.
Incluir archivos de proyecto
Incluya los archivos necesarios en el proyecto de desarrollo. Si está creando una aplicación cliente mediante Java, incluya los archivos JAR necesarios. Si utiliza servicios web, asegúrese de incluir los archivos proxy.
Los siguientes archivos JAR deben agregarse a la ruta de clase del proyecto:
- adobe-livecycle-client.jar
- adobe-usermanager-client.jar
- adobe-signatures-client.jar
- adobe-Utilities.jar (obligatorio si AEM Forms está implementado en JBoss)
- jbossall-client.jar (requerido si AEM Forms está implementado en JBoss)
Crear un cliente de firmas
Para poder realizar una operación de servicio de firma mediante programación, debe crear un cliente de servicio de firma.
Obtener el documento del PDF para firmar
Para firmar un documento de PDF, debe obtener un documento de PDF que contenga un campo de firma. Si un documento PDF no contiene un campo de firma, no se puede firmar. Se puede agregar un campo de firma mediante Designer o mediante programación.
Firmar el documento del PDF
Al firmar un documento de PDF, puede establecer las opciones en tiempo de ejecución que utiliza el servicio de firma. Puede establecer las siguientes opciones:
- Opciones de aspecto
- Comprobación de revocación
- Valores de marca de hora
Las opciones de aspecto se configuran mediante una PDFSignatureAppearanceOptionSpec
objeto. Por ejemplo, puede mostrar la fecha dentro de una firma invocando la variable PDFSignatureAppearanceOptionSpec
del objeto setShowDate
método y paso true
.
También puede especificar si desea realizar o no una comprobación de revocación que determine si se ha revocado el certificado utilizado para firmar digitalmente un documento PDF. Para realizar la comprobación de revocación, puede especificar uno de los siguientes valores:
- NoCheck: No realice la comprobación de revocación.
- BestEffort: Intente comprobar siempre la revocación de todos los certificados de la cadena. Si se produce algún problema en la comprobación, se supone que la revocación es válida. Si se produce algún error, supongamos que el certificado no se revoca.
- CheckIfAvailable: Compruebe la revocación de todos los certificados de la cadena si la información de revocación está disponible. Si se produce algún problema al comprobar, se supone que la revocación no es válida. Si se produce algún error, supongamos que el certificado se revoca y no es válido. (Este es el valor predeterminado.)
- AlwaysCheck: Compruebe la revocación de todos los certificados de la cadena. Si la información de revocación no está presente en ningún certificado, se supone que la revocación no es válida.
Para realizar la comprobación de revocación en un certificado, puede especificar una URL para un servidor de lista de revocación de certificados (CRL) utilizando un CRLOptionSpec
objeto. Sin embargo, si desea comprobar la revocación y no especifica una URL a un servidor CRL, el servicio de firma obtiene la URL del certificado.
En lugar de utilizar un servidor CRL, puede utilizar un servidor de protocolo de estado de certificado en línea (OCSP) al realizar la comprobación de revocación. Normalmente, cuando se utiliza un servidor OCSP en lugar de un servidor CRL, la comprobación de revocación se realiza más rápido. (Consulte "Protocolo de estado de certificado en línea" en https://tools.ietf.org/html/rfc2560.)
Puede establecer el orden del servidor CRL y OCSP que utiliza el servicio de firmas mediante Aplicaciones y Servicios de Adobe. Por ejemplo, si el servidor OCSP se configura primero en Aplicaciones y Servicios de Adobe, se comprueba el servidor OCSP, seguido del servidor CRL. (Consulte "Administración de certificados y credenciales mediante el almacén de confianza" en la Ayuda de AAC).
Si especifica que no se debe realizar la comprobación de revocación, el servicio de firma no comprobará si se ha revocado el certificado utilizado para firmar o certificar un documento. Es decir, se ignora la información del servidor CRL y OCSP.
CRLOptionSpec
y OCSPOptionSpec
objeto. Por ejemplo, para anular el servidor CRL, puede invocar la variable CRLOptionSpec
del objeto setLocalURI
método.La marca de hora se refiere al proceso de seguimiento del momento en que se modificó un documento firmado o certificado. Una vez firmado un documento, no se debe modificar, ni siquiera por el propietario del documento. La marca de hora ayuda a hacer cumplir la validez de un documento firmado o certificado. Puede establecer las opciones de marca de hora mediante un TSPOptionSpec
objeto. Por ejemplo, puede especificar la URL de un servidor de proveedor de marca de hora (TSP).
Para firmar correctamente un documento de PDF, puede especificar el nombre completo del campo de firma que contendrá la firma digital, como form1[0].#subform[1].SignatureField3[3]
. Al utilizar un campo de formulario XFA, también se puede utilizar el nombre parcial del campo de firma: SignatureField3[3]
.
También debe hacer referencia a una credencial de seguridad para firmar digitalmente un documento de PDF. Para hacer referencia a una credencial de seguridad, debe especificar un alias. El alias es una referencia a una credencial real que puede estar en un archivo PKCS#12 (con extensión .pfx) o en un módulo de seguridad de hardware (HSM). Para obtener información sobre las credenciales de seguridad, consulte la guía* Instalación e implementación de AEM Forms* para su servidor de aplicaciones.
Guardar el documento del PDF firmado
Una vez que el servicio de firma firma firma digitalmente el documento de PDF, puede guardarlo como archivo de PDF para que los usuarios puedan abrirlo en Acrobat o Adobe Reader.
Consulte también
Firmar digitalmente documentos PDF mediante la API de Java
Firma digital de documentos de PDF mediante la API de servicio web
Inclusión de archivos de biblioteca Java de AEM Forms
Configuración de las propiedades de conexión
Recuperación de nombres de campos de firma
Firmar digitalmente documentos PDF mediante la API de Java digitally-sign-pdf-documents-using-the-java-api
Firme digitalmente un documento de PDF mediante la API de firma (Java):
-
Incluir archivos de proyecto
Incluya archivos JAR del cliente, como adobe-signatures-client.jar, en la ruta de clase de su proyecto Java.
-
Crear un cliente de firmas
- Cree un
ServiceClientFactory
objeto que contiene propiedades de conexión. - Cree un
SignatureServiceClient
usando su constructor y pasando elServiceClientFactory
objeto.
- Cree un
-
Obtener el documento del PDF para firmar
- Cree un
java.io.FileInputStream
objeto que representa el documento PDF que se va a firmar digitalmente usando su constructor y pasando un valor de cadena que especifica la ubicación del documento PDF. - Cree un
com.adobe.idp.Document
usando su constructor y pasando eljava.io.FileInputStream
objeto.
- Cree un
-
Firmar el documento del PDF
Firme el documento del PDF invocando la variable
SignatureServiceClient
del objetosign
y pasando los siguientes valores:- A
com.adobe.idp.Document
que representa el documento PDF que se va a firmar. - Valor de cadena que representa el nombre del campo de firma que contendrá la firma digital.
- A
Credential
objeto que representa la credencial que se utiliza para firmar digitalmente el documento del PDF. Cree unCredential
invocando el objetoCredential
estático del objetogetInstance
y pasando un valor de cadena que especifica el valor de alias que corresponde a la credencial de seguridad. - A
HashAlgorithm
objeto que especifica un miembro de datos estático que representa el algoritmo hash que se va a usar para resumir el documento del PDF. Por ejemplo, puede especificarHashAlgorithm.SHA1
para usar el algoritmo SHA1. - Un valor de cadena que representa el motivo por el que el documento del PDF se firmó digitalmente.
- Valor de cadena que representa la información de contacto del firmante.
- A
PDFSignatureAppearanceOptions
que controla el aspecto de la firma digital. Por ejemplo, puede utilizar este objeto para agregar un logotipo personalizado a una firma digital. - A
java.lang.Boolean
objeto que especifica si se realizará la comprobación de revocación en el certificado del firmante. - Un
OCSPOptionSpec
objeto que almacena preferencias para la compatibilidad con el Protocolo de estado de certificado en línea (OCSP). Si no se realiza la comprobación de revocación, no se usa este parámetro y puede especificarnull
. - A
CRLPreferences
objeto que almacena las preferencias de lista de revocación de certificados (CRL). Si no se realiza la comprobación de revocación, no se usa este parámetro y puede especificarnull
. - A
TSPPreferences
objeto que almacena las preferencias de compatibilidad con el proveedor de marcas de hora (TSP). Este parámetro es opcional y puede sernull
. Para obtener más información, consulte Referencia de la API de AEM Forms.
La variable
sign
el método devuelve uncom.adobe.idp.Document
que representa el documento PDF firmado. - A
-
Guardar el documento del PDF firmado
- Cree un
java.io.File
y asegúrese de que la extensión de archivo es .pdf. - Invocar el
com.adobe.idp.Document
del objetocopyToFile
método y pasejava.io.File
para copiar el contenido delDocument
al archivo. Asegúrese de usar la variablecom.adobe.idp.Document
objeto devuelto por elsign
método.
- Cree un
Consulte también
Firma digital de documentos PDF
Inicio rápido (modo SOAP): Firma digital de un documento de PDF mediante la API de Java
Inclusión de archivos de biblioteca Java de AEM Forms
Configuración de las propiedades de conexión
Firma digital de documentos de PDF mediante la API de servicio web digitally-signing-pdf-documents-using-the-web-service-api
Para firmar digitalmente un documento de PDF mediante la API de firma (servicio web):
-
Incluir archivos de proyecto
Cree un proyecto de Microsoft .NET que utilice MTOM. Asegúrese de utilizar la siguiente definición WSDL:
http://localhost:8080/soap/services/SignatureService?WSDL&lc_version=9.0.1
.note note NOTE Reemplazar localhost
con la dirección IP del servidor que hospeda AEM Forms. -
Crear un cliente de firmas
-
Cree un
SignatureServiceClient
usando su constructor predeterminado. -
Cree un
SignatureServiceClient.Endpoint.Address
usando la variableSystem.ServiceModel.EndpointAddress
constructor. Pase un valor de cadena que especifique el WSDL al servicio de AEM Forms (por ejemplo,http://localhost:8080/soap/services/SignatureService?WSDL
). No es necesario que use la variablelc_version
atributo. Este atributo se utiliza al crear una referencia de servicio). -
Cree un
System.ServiceModel.BasicHttpBinding
obteniendo el valor deSignatureServiceClient.Endpoint.Binding
campo . Conversión del valor devuelto aBasicHttpBinding
. -
Configure las variables
System.ServiceModel.BasicHttpBinding
del objetoMessageEncoding
campo aWSMessageEncoding.Mtom
. Este valor garantiza que se utilice MTOM. -
Habilite la autenticación HTTP básica realizando las siguientes tareas:
- Asignar el nombre de usuario de los formularios AEM al campo
SignatureServiceClient.ClientCredentials.UserName.UserName
. - Asignar el valor de contraseña correspondiente al campo
SignatureServiceClient.ClientCredentials.UserName.Password
. - Asignar el valor constante
HttpClientCredentialType.Basic
al campoBasicHttpBindingSecurity.Transport.ClientCredentialType
. - Asignar el valor constante
BasicHttpSecurityMode.TransportCredentialOnly
al campoBasicHttpBindingSecurity.Security.Mode
.
- Asignar el nombre de usuario de los formularios AEM al campo
-
-
Obtener el documento del PDF para firmar
- Cree un
BLOB
usando su constructor. La variableBLOB
se utiliza para almacenar un documento de PDF firmado. - Cree un
System.IO.FileStream
invocando su constructor y pasando un valor de cadena que representa la ubicación del archivo del documento PDF que se va a firmar y el modo en que se abre el archivo. - Cree una matriz de bytes que almacene el contenido del
System.IO.FileStream
objeto. Puede determinar el tamaño de la matriz de bytes obteniendo la variableSystem.IO.FileStream
del objetoLength
propiedad. - Rellene la matriz de bytes con los datos de flujo invocando la variable
System.IO.FileStream
del objetoRead
y pasando la matriz de bytes, la posición inicial y la longitud de flujo para leer. - Rellene el
BLOB
asignando suMTOM
propiedad del contenido de la matriz de bytes.
- Cree un
-
Firmar el documento del PDF
Firme el documento del PDF invocando la variable
SignatureServiceClient
del objetosign
y pasando los siguientes valores:- A
BLOB
que representa el documento PDF que se va a firmar. - Valor de cadena que representa el nombre del campo de firma que contendrá la firma digital.
- A
Credential
objeto que representa la credencial que se utiliza para firmar digitalmente el documento del PDF. Cree unCredential
utilizando su constructor y especifique el alias asignando un valor alCredential
del objetoalias
propiedad. - A
HashAlgorithm
objeto que especifica un miembro de datos estático que representa el algoritmo hash que se va a usar para resumir el documento del PDF. Por ejemplo, puede especificarHashAlgorithm.SHA1
para usar el algoritmo SHA1. - Un valor booleano que especifica si se utiliza el algoritmo hash.
- Un valor de cadena que representa el motivo por el que el documento del PDF se firmó digitalmente.
- Valor de cadena que representa la ubicación del firmante.
- Valor de cadena que representa la información de contacto del firmante.
- A
PDFSignatureAppearanceOptions
que controla el aspecto de la firma digital. Por ejemplo, puede utilizar este objeto para agregar un logotipo personalizado a una firma digital. - A
System.Boolean
objeto que especifica si se realizará la comprobación de revocación en el certificado del firmante. Si esta comprobación de revocación se realiza, se incrusta en la firma. El valor predeterminado esfalse
. - Un
OCSPOptionSpec
objeto que almacena preferencias para la compatibilidad con el Protocolo de estado de certificado en línea (OCSP). Si no se realiza la comprobación de revocación, no se usa este parámetro y puede especificarnull
. Para obtener información sobre este objeto, consulte Referencia de la API de AEM Forms. - A
CRLPreferences
objeto que almacena las preferencias de lista de revocación de certificados (CRL). Si no se realiza la comprobación de revocación, no se usa este parámetro y puede especificarnull
. - A
TSPPreferences
objeto que almacena las preferencias de compatibilidad con el proveedor de marcas de hora (TSP). Este parámetro es opcional y puede sernull
.
La variable
sign
el método devuelve unBLOB
que representa el documento PDF firmado. - A
-
Guardar el documento del PDF firmado
- Cree un
System.IO.FileStream
invocando su constructor. Pase un valor de cadena que represente la ubicación del archivo del documento del PDF firmado y el modo en que se abre el archivo. - Cree una matriz de bytes que almacene el contenido del
BLOB
objeto devuelto por elsign
método. Rellene la matriz de bytes obteniendo el valor de la variableBLOB
del objetoMTOM
miembro de datos. - Cree un
System.IO.BinaryWriter
invocando su constructor y pasando elSystem.IO.FileStream
objeto. - Escriba el contenido de la matriz de bytes en un archivo de PDF invocando la variable
System.IO.BinaryWriter
del objetoWrite
y pasando la matriz de bytes.
- Cree un
Consulte también
Firma digital de documentos PDF
Invocación de AEM Forms mediante MTOM
Invocación de AEM Forms mediante SwaRef
Firma digital de Forms interactivo digitally-signing-interactive-forms
Puede firmar un formulario interactivo que crea el servicio de Forms. Por ejemplo, considere el siguiente flujo de trabajo:
- Se combina un formulario de PDF basado en XFA creado mediante Designer y datos de formulario ubicados en un documento XML utilizando el servicio Forms. El servidor de Forms procesa un formulario interactivo.
- El formulario interactivo se firma mediante la API del servicio de firma.
El resultado es un formulario de PDF interactivo con firma digital. Al firmar un formulario de PDF basado en un formulario XFA, asegúrese de guardar el archivo de PDF como un formulario de PDF estático de Adobe. Si intenta firmar un formulario de PDF guardado como formulario de PDF dinámico de Adobe, se producirá una excepción. Como está firmando el formulario que devuelve el servicio Forms, asegúrese de que el formulario contenga un campo de firma.
Al utilizar la API de servicio de Forms, establezca la variable GenerateServerAppearance
opción de tiempo de ejecución a true
. Esta opción en tiempo de ejecución garantiza que el aspecto del formulario generado en el servidor sea válido cuando se abra en Acrobat o Adobe Reader. Se recomienda definir esta opción en tiempo de ejecución al generar un formulario interactivo para firmar con la API de Forms.
Resumen de los pasos summary_of_steps-4
Para firmar digitalmente un formulario interactivo que devuelve el servicio de Forms, realice las siguientes tareas:
- Incluir archivos de proyecto.
- Cree un cliente de Forms y firmas.
- Obtenga el formulario interactivo mediante el servicio de Forms.
- Firme el formulario interactivo.
- Guarde el documento de PDF firmado como archivo de PDF.
Incluir archivos de proyecto
Incluya los archivos necesarios en el proyecto de desarrollo. Si está creando una aplicación cliente mediante Java, incluya los archivos JAR necesarios. Si utiliza servicios web, asegúrese de incluir los archivos proxy.
Los siguientes archivos JAR deben agregarse a la ruta de clase del proyecto:
- adobe-livecycle-client.jar
- adobe-usermanager-client.jar
- adobe-signatures-client.jar
- adobe-forms-client.jar
- adobe-Utilities.jar (obligatorio si AEM Forms está implementado en JBoss)
- jbossall-client.jar (requerido si AEM Forms está implementado en JBoss)
Para obtener información sobre la ubicación de estos archivos JAR, consulte Inclusión de archivos de biblioteca Java de AEM Forms.
Crear un cliente de Forms y firmas
Dado que este flujo de trabajo invoca Forms y los servicios de firma, cree un cliente de servicio de Forms y un cliente de servicio de firma.
Obtener el formulario interactivo mediante el servicio Forms
Puede utilizar el servicio de Forms para obtener el formulario de PDF interactivo que desea firmar. Desde AEM Forms, puede pasar un com.adobe.idp.Document
al servicio de Forms que contiene el formulario que se va a procesar. El nombre de este método es renderPDFForm2
. Este método devuelve un com.adobe.idp.Document
objeto que contiene el formulario que se va a firmar. Puede pasar esto com.adobe.idp.Document
al servicio de firma.
Del mismo modo, si utiliza servicios web, puede pasar la variable BLOB
instancia que el servicio Forms devuelve al servicio Signature.
renderPDFForm2
método.Firmar el formulario interactivo
Al firmar un documento de PDF, puede establecer las opciones de tiempo de ejecución que utiliza el servicio Signature. Puede establecer las siguientes opciones:
- Opciones de aspecto
- Comprobación de revocación
- Valores de marca de hora
Las opciones de aspecto se configuran mediante una PDFSignatureAppearanceOptionSpec
objeto. Por ejemplo, puede mostrar la fecha dentro de una firma invocando la variable PDFSignatureAppearanceOptionSpec
del objeto setShowDate
método y paso true
.
Guardar el documento del PDF firmado
Una vez que el servicio de firma firme digitalmente el documento del PDF, puede guardarlo como archivo del PDF. El archivo PDF se puede abrir en Acrobat o Adobe Reader.
Consulte también
Firmar digitalmente un formulario interactivo mediante la API de Java
Firmar digitalmente un formulario interactivo mediante la API de servicio web
Inclusión de archivos de biblioteca Java de AEM Forms
Configuración de las propiedades de conexión
Firma digital de documentos PDF
Procesar formularios PDF interactivos
Firmar digitalmente un formulario interactivo mediante la API de Java digitally-sign-an-interactive-form-using-the-java-api
Firme digitalmente un formulario interactivo utilizando Forms y la API de firma (Java):
-
Incluir archivos de proyecto
Incluya archivos JAR del cliente, como adobe-signatures-client.jar y adobe-forms-client.jar, en la ruta de clase de su proyecto Java.
-
Crear un cliente de Forms y firmas
- Cree un
ServiceClientFactory
objeto que contiene propiedades de conexión. - Cree un
SignatureServiceClient
usando su constructor y pasando elServiceClientFactory
objeto. - Cree un
FormsServiceClient
usando su constructor y pasando elServiceClientFactory
objeto.
- Cree un
-
Obtener el formulario interactivo mediante el servicio Forms
-
Cree un
java.io.FileInputStream
objeto que representa el documento de PDF que se va a pasar al servicio de Forms mediante su constructor. Pase un valor de cadena que especifique la ubicación del documento del PDF. -
Cree un
com.adobe.idp.Document
usando su constructor y pasando eljava.io.FileInputStream
objeto. -
Cree un
java.io.FileInputStream
objeto que representa el documento XML que contiene los datos de formulario que se van a pasar al servicio Forms utilizando su constructor. Pase un valor de cadena que especifique la ubicación del archivo XML. -
Cree un
com.adobe.idp.Document
usando su constructor y pasando eljava.io.FileInputStream
objeto. -
Cree un
PDFFormRenderSpec
objeto que se utiliza para definir las opciones de tiempo de ejecución. Invocar elPDFFormRenderSpec
del objetosetGenerateServerAppearance
método y pasetrue
. -
Invocar el
FormsServiceClient
del objetorenderPDFForm2
y pase los siguientes valores:- A
com.adobe.idp.Document
objeto que contiene el formulario de PDF que se va a procesar. - A
com.adobe.idp.Document
objeto que contiene datos para combinar con el formulario. - A
PDFFormRenderSpec
que almacena opciones en tiempo de ejecución. - A
URLSpec
que contiene valores de URI necesarios para el servicio Forms. Puede especificarnull
para este valor de parámetro. - A
java.util.HashMap
que almacena archivos adjuntos. Este es un parámetro opcional y puede especificarnull
si no desea adjuntar archivos al formulario.
La variable
renderPDFForm2
el método devuelve unFormsResult
objeto que contiene una secuencia de datos de formulario - A
-
Recupere el formulario del PDF invocando la variable
FormsResult
del objetogetOutputContent
método. Este método devuelve uncom.adobe.idp.Document
objeto que representa el formulario interactivo.
-
-
Firmar el formulario interactivo
Firme el documento del PDF invocando la variable
SignatureServiceClient
del objetosign
y pasando los siguientes valores:- A
com.adobe.idp.Document
que representa el documento PDF que se va a firmar. Asegúrese de que este objeto sea elcom.adobe.idp.Document
objeto obtenido del servicio Forms. - Valor de cadena que representa el nombre del campo de firma que se firma.
- A
Credential
objeto que representa la credencial que se utiliza para firmar digitalmente el documento del PDF. Cree unCredential
invocando el objetoCredential
estático del objetogetInstance
método. Pase un valor de cadena que especifique el valor de alias que corresponde a la credencial de seguridad. - A
HashAlgorithm
objeto que especifica un miembro de datos estático que representa el algoritmo hash que se va a usar para resumir el documento del PDF. Por ejemplo, puede especificarHashAlgorithm.SHA1
para usar el algoritmo SHA1. - Un valor de cadena que representa el motivo por el que el documento del PDF se firmó digitalmente.
- Valor de cadena que representa la información de contacto del firmante.
- A
PDFSignatureAppearanceOptions
que controla el aspecto de la firma digital. Por ejemplo, puede utilizar este objeto para agregar un logotipo personalizado a una firma digital. - A
java.lang.Boolean
objeto que especifica si se realizará la comprobación de revocación en el certificado del firmante. - Un
OCSPPreferences
objeto que almacena preferencias para la compatibilidad con el Protocolo de estado de certificado en línea (OCSP). Si no se realiza la comprobación de revocación, no se usa este parámetro y puede especificarnull
. - A
CRLPreferences
objeto que almacena las preferencias de lista de revocación de certificados (CRL). Si no se realiza la comprobación de revocación, no se usa este parámetro y puede especificarnull
. - A
TSPPreferences
objeto que almacena las preferencias de compatibilidad con el proveedor de marcas de hora (TSP). Este parámetro es opcional y puede sernull
.
La variable
sign
el método devuelve uncom.adobe.idp.Document
que representa el documento PDF firmado. - A
-
Guardar el documento del PDF firmado
- Cree un
java.io.File
y asegúrese de que la extensión de nombre de archivo es .pdf. - Invocar el
com.adobe.idp.Document
del objetocopyToFile
método y pasejava.io.File
para copiar el contenido delDocument
al archivo. Asegúrese de usar la variablecom.adobe.idp.Document
que la variablesign
método devuelto.
- Cree un
Consulte también
Firma digital de Forms interactivo
Inicio rápido (modo SOAP): Firma digital de un documento de PDF mediante la API de Java
Inclusión de archivos de biblioteca Java de AEM Forms
Configuración de las propiedades de conexión
Firmar digitalmente un formulario interactivo mediante la API de servicio web digitally-sign-an-interactive-form-using-the-web-service-api
Firme digitalmente un formulario interactivo utilizando la API de Forms y Firma (servicio web):
-
Incluir archivos de proyecto
Cree un proyecto de Microsoft .NET que utilice MTOM. Dado que esta aplicación cliente invoca dos servicios de AEM Forms, cree dos referencias de servicio. Utilice la siguiente definición WSDL para la referencia de servicio asociada al servicio de firma:
http://localhost:8080/soap/services/SignatureService?WSDL&lc_version=9.0.1
.Utilice la siguiente definición WSDL para la referencia de servicio asociada al servicio Forms:
http://localhost:8080/soap/services/FormsService?WSDL&lc_version=9.0.1
.Porque la variable
BLOB
el tipo de datos es común a ambas referencias de servicio; califique completamente la variableBLOB
tipo de datos al utilizarla. En el inicio rápido correspondiente del servicio web, todas lasBLOB
las instancias están completamente cualificadas.note note NOTE Reemplazar localhost
con la dirección IP del servidor que hospeda AEM Forms. -
Crear un cliente de Forms y firmas
-
Cree un
SignatureServiceClient
usando su constructor predeterminado. -
Cree un
SignatureServiceClient.Endpoint.Address
usando la variableSystem.ServiceModel.EndpointAddress
constructor. Pase un valor de cadena que especifique el WSDL al servicio de AEM Forms (por ejemplo,http://localhost:8080/soap/services/SignatureService?WSDL
). No es necesario que use la variablelc_version
atributo. Este atributo se utiliza al crear una referencia de servicio). -
Cree un
System.ServiceModel.BasicHttpBinding
obteniendo el valor deSignatureServiceClient.Endpoint.Binding
campo . Conversión del valor devuelto aBasicHttpBinding
. -
Configure las variables
System.ServiceModel.BasicHttpBinding
del objetoMessageEncoding
campo aWSMessageEncoding.Mtom
. Este valor garantiza que se utilice MTOM. -
Habilite la autenticación HTTP básica realizando las siguientes tareas:
- Asignar el nombre de usuario de los formularios AEM al campo
SignatureServiceClient.ClientCredentials.UserName.UserName
. - Asignar el valor de contraseña correspondiente al campo
SignatureServiceClient.ClientCredentials.UserName.Password
. - Asignar el valor constante
HttpClientCredentialType.Basic
al campoBasicHttpBindingSecurity.Transport.ClientCredentialType
.
- Asignar el nombre de usuario de los formularios AEM al campo
-
Asignar el valor constante
BasicHttpSecurityMode.TransportCredentialOnly
al campoBasicHttpBindingSecurity.Security.Mode
.
note note NOTE Repita estos pasos para el cliente de servicio de Forms. -
-
Obtener el formulario interactivo mediante el servicio Forms
-
Cree un
BLOB
usando su constructor. La variableBLOB
se utiliza para almacenar un documento de PDF firmado. -
Cree un
System.IO.FileStream
invocando su constructor y pasando un valor de cadena que representa la ubicación del archivo del documento PDF que se va a firmar y el modo en que se abre el archivo. -
Cree una matriz de bytes que almacene el contenido del
System.IO.FileStream
objeto. Puede determinar el tamaño de la matriz de bytes obteniendo la variableSystem.IO.FileStream
del objetoLength
propiedad. -
Rellene la matriz de bytes con los datos de flujo invocando la variable
System.IO.FileStream
del objetoRead
y pasando la matriz de bytes, la posición inicial y la longitud de flujo para leer. -
Rellene el
BLOB
asignando suMTOM
propiedad del contenido de la matriz de bytes. -
Cree un
BLOB
usando su constructor. La variableBLOB
se utiliza para almacenar datos de formulario. -
Cree un
System.IO.FileStream
invocando su constructor y pasando un valor de cadena que representa la ubicación del archivo XML que contiene los datos del formulario y el modo en que se abre el archivo. -
Cree una matriz de bytes que almacene el contenido del
System.IO.FileStream
objeto. Puede determinar el tamaño de la matriz de bytes obteniendo la variableSystem.IO.FileStream
del objetoLength
propiedad. -
Rellene la matriz de bytes con los datos de flujo invocando la variable
System.IO.FileStream
del objetoRead
y pasando la matriz de bytes, la posición inicial y la longitud de flujo para leer. -
Rellene el
BLOB
asignando suMTOM
propiedad del contenido de la matriz de bytes. -
Cree un
PDFFormRenderSpec
objeto que se utiliza para definir las opciones de tiempo de ejecución. Asignar el valortrue
aPDFFormRenderSpec
del objetogenerateServerAppearance
campo . -
Invocar el
FormsServiceClient
del objetorenderPDFForm2
y pase los siguientes valores:- A
BLOB
objeto que contiene el formulario de PDF que se va a procesar. - A
BLOB
objeto que contiene datos para combinar con el formulario. - A
PDFFormRenderSpec
que almacena opciones en tiempo de ejecución. - A
URLSpec
que contiene valores de URI necesarios para el servicio Forms. Puede especificarnull
para este valor de parámetro. - A
java.util.HashMap
que almacena archivos adjuntos. Este es un parámetro opcional y puede especificarnull
si no desea adjuntar archivos al formulario. - Parámetro de salida largo utilizado para almacenar el número de páginas en el formulario.
- Un parámetro de salida de cadena que se utiliza para el valor de configuración regional.
- A
FormResult
que es un parámetro de salida que se utiliza para almacenar el formulario interactivo.
- A
-
Recupere el formulario del PDF invocando la variable
FormsResult
del objetooutputContent
campo . Este campo almacena unBLOB
objeto que representa el formulario interactivo.
-
-
Firmar el formulario interactivo
Firme el documento del PDF invocando la variable
SignatureServiceClient
del objetosign
y pasando los siguientes valores:- A
BLOB
que representa el documento PDF que se va a firmar. Utilice la variableBLOB
instancia devuelta por el servicio de Forms. - Valor de cadena que representa el nombre del campo de firma que se firma.
- A
Credential
objeto que representa la credencial que se utiliza para firmar digitalmente el documento del PDF. Cree unCredential
utilizando su constructor y especifique el alias asignando un valor alCredential
del objetoalias
propiedad. - A
HashAlgorithm
objeto que especifica un miembro de datos estático que representa el algoritmo hash que se va a usar para resumir el documento del PDF. Por ejemplo, puede especificarHashAlgorithm.SHA1
para usar el algoritmo SHA1. - Un valor booleano que especifica si se utiliza el algoritmo hash.
- Un valor de cadena que representa el motivo por el que el documento del PDF se firmó digitalmente.
- Valor de cadena que representa la ubicación del firmante.
- Valor de cadena que representa la información de contacto del firmante.
- A
PDFSignatureAppearanceOptions
que controla el aspecto de la firma digital. Por ejemplo, puede utilizar este objeto para agregar un logotipo personalizado a una firma digital. - A
System.Boolean
objeto que especifica si se realizará la comprobación de revocación en el certificado del firmante. Si esta comprobación de revocación se realiza, se incrusta en la firma. El valor predeterminado esfalse
. - Un
OCSPPreferences
objeto que almacena preferencias para la compatibilidad con el Protocolo de estado de certificado en línea (OCSP). Si no se realiza la comprobación de revocación, no se usa este parámetro y puede especificarnull
. Para obtener información sobre este objeto, consulte Referencia de la API de AEM Forms. - A
CRLPreferences
objeto que almacena las preferencias de lista de revocación de certificados (CRL). Si no se realiza la comprobación de revocación, no se usa este parámetro y puede especificarnull
. - A
TSPPreferences
objeto que almacena las preferencias de compatibilidad con el proveedor de marcas de hora (TSP). Este parámetro es opcional y puede sernull
.
La variable
sign
el método devuelve unBLOB
que representa el documento PDF firmado. - A
-
Guardar el documento del PDF firmado
- Cree un
System.IO.FileStream
invocando su constructor. Pase un valor de cadena que represente la ubicación del archivo del documento del PDF firmado y el modo en que se abre el archivo. - Cree una matriz de bytes que almacene el contenido del
BLOB
objeto devuelto por elsign
método. Rellene la matriz de bytes obteniendo el valor de la variableBLOB
del objetoMTOM
miembro de datos. - Cree un
System.IO.BinaryWriter
invocando su constructor y pasando elSystem.IO.FileStream
objeto. - Escriba el contenido de la matriz de bytes en un archivo de PDF invocando la variable
System.IO.BinaryWriter
del objetoWrite
y pasando la matriz de bytes.
- Cree un
Consulte también
Firma digital de Forms interactivo
Invocación de AEM Forms mediante MTOM
Certificar documentos PDF certifying-pdf-documents
Puede proteger un documento PDF certificándolo con un tipo de firma concreto denominada firma certificada. Una firma certificada se distingue de una firma digital de las siguientes maneras:
- Debe ser la primera firma aplicada al documento PDF; es decir, en el momento en que se aplique la firma certificada, cualquier otro campo de firma del documento debe estar sin firmar. Solo se permite una firma certificada en un documento PDF. Si desea firmar y certificar un documento PDF, deberá certificarlo antes de firmarlo. Después de certificar un documento PDF, puede firmar digitalmente en los campos de firma adicionales.
- El autor o el creador del documento pueden especificar que el documento se puede modificar de determinadas formas sin invalidar la firma certificada. Por ejemplo, el documento puede permitir rellenar formularios o hacer comentarios. Si el autor especifica que no se permite una modificación determinada, Acrobat impedirá que los usuarios modifiquen el documento de esta manera. Si se realizan dichas modificaciones, como por ejemplo utilizar otra aplicación, la firma certificada no será válida y Acrobat emitirá una advertencia cuando cualquier usuario abra el documento. (Con las firmas no certificadas no se evitan las modificaciones y las operaciones de edición normales no invalidan la firma original).
- En el momento de la firma, el documento se analizará para detectar tipos de contenido específicos que puedan hacer que el contenido de un documento sea ambiguo o engañoso. Por ejemplo, una anotación podría complicar algún texto de una página que sea importante para comprender qué se certifica. Se puede proporcionar una explicación (autenticación legal) sobre dicho contenido.
Puede certificar mediante programación documentos de PDF mediante la API de Java del servicio de firmas o la API del servicio web de firmas. Al certificar un documento de PDF, debe hacer referencia a una credencial de seguridad que existe en el servicio Credencial. Para obtener información sobre las credenciales de seguridad, consulte la Instalación e implementación de AEM Forms para su servidor de aplicaciones.
Puede añadir el siguiente valor de configuración en el archivo cknfastrc, que se encuentra en /opt/nfast/cknfastrc (o c:\nfast\cknfastrc):
CKNFAST_ASSUME_SINGLE_PROCESS=0
Después de agregar este valor de configuración al archivo cknfastrc, la nueva credencial se puede usar sin reiniciar el servidor de aplicaciones J2EE.
Resumen de los pasos summary_of_steps-5
Para certificar un documento de PDF, realice las siguientes tareas:
- Incluir archivos de proyecto.
- Cree un cliente de firma.
- Obtenga el documento del PDF para certificarlo.
- Certifique el documento del PDF.
- Guarde el documento de PDF certificado como archivo de PDF.
Incluir archivos de proyecto
Incluya los archivos necesarios en el proyecto de desarrollo. Si está creando una aplicación cliente mediante Java, incluya los archivos JAR necesarios. Si utiliza servicios web, asegúrese de incluir los archivos proxy.
Los siguientes archivos JAR deben agregarse a la ruta de clase del proyecto:
- adobe-livecycle-client.jar
- adobe-usermanager-client.jar
- adobe-signatures-client.jar
- adobe-Utilities.jar (obligatorio si AEM Forms está implementado en JBoss)
- jbossall-client.jar (requerido si AEM Forms está implementado en JBoss)
Para obtener información sobre la ubicación de estos archivos JAR, consulte Inclusión de archivos de biblioteca Java de AEM Forms.
Crear un cliente de firma
Para poder realizar una operación de firma mediante programación, debe crear un cliente de firma.
Obtener el documento del PDF para certificar
Para certificar un documento de PDF, debe obtener un documento de PDF que contenga un campo de firma. Si un documento PDF no contiene un campo de firma, no se puede certificar. Se puede agregar un campo de firma mediante Designer o mediante programación. Para obtener información sobre cómo agregar un campo de firma mediante programación, consulte Adición de campos de firma.
Certificar el documento del PDF
Para certificar correctamente un documento de PDF, se requieren los siguientes valores de entrada que utiliza el servicio Signature para certificar un documento de PDF:
- documento del PDF: Documento de PDF que contiene un campo de firma, que es un campo de formulario que contiene una representación gráfica de la firma certificada. Un documento PDF debe contener un campo de firma para poder certificarlo. Se puede agregar un campo de firma mediante Designer o mediante programación. (Consulte Adición de campos de firma.)
- Nombre del campo de firma: El nombre completo del campo de firma certificado. El siguiente valor es un ejemplo:
form1[0].#subform[1].SignatureField3[3]
. Al utilizar un campo de formulario XFA, también se puede utilizar el nombre parcial del campo de firma:SignatureField3[3]
. Si se pasa un valor nulo para el nombre del campo, se crea y certifica dinámicamente un campo de firma invisible. - Credenciales de seguridad: Credencial que se utiliza para certificar el documento del PDF. Esta credencial de seguridad contiene una contraseña y un alias, que deben coincidir con un alias que aparezca en la credencial que se encuentra dentro del servicio Credential. El alias es una referencia a una credencial real que puede estar en un archivo PKCS#12 (con extensión .pfx) o en un módulo de seguridad de hardware (HSM).
- Algoritmo de hash: Algoritmo hash que se debe usar para resumir el documento del PDF.
- Motivo de la firma: Valor que se muestra en Acrobat o Adobe Reader para que otros usuarios sepan el motivo por el que el documento del PDF se certificó.
- Ubicación del firmante: La ubicación del firmante especificada por la credencial.
- Información de contacto: Información de contacto, como la dirección y el número de teléfono del firmante.
- Información de permisos: Permisos que controlan las acciones que un usuario final puede realizar en un documento sin que la firma certificada no sea válida. Por ejemplo, puede establecer el permiso para que cualquier cambio en el documento del PDF haga que la firma certificada no sea válida.
- Explicación legal: Cuando un documento está certificado, se analiza automáticamente para detectar tipos específicos de contenido que podrían hacer que el contenido de un documento sea ambiguo o engañoso. Por ejemplo, una anotación podría complicar algún texto de una página que sea importante para comprender qué se certifica. El proceso de digitalización genera advertencias sobre estos tipos de contenido. Este valor proporciona una explicación adicional del contenido que puede haber generado advertencias.
- Opciones de aspecto: Opciones que controlan el aspecto de la firma certificada. Por ejemplo, la firma certificada puede mostrar información de fecha.
- Comprobación de revocación: Este valor especifica si la comprobación de revocación se realiza para el certificado del firmante. La configuración predeterminada de
false
significa que la comprobación de revocación no se ha realizado. - Configuración de OCSP: Configuración de la compatibilidad con el Protocolo de estado de certificado en línea (OCSP), que proporciona información sobre el estado de las credenciales que se usan para certificar el documento del PDF. Por ejemplo, puede especificar la dirección URL del servidor que proporciona información sobre las credenciales que utiliza para iniciar sesión en el documento del PDF.
- Configuración de CRL: Configuración de las preferencias de la lista de revocación de certificados (CRL) si se ha realizado la comprobación de revocación. Por ejemplo, puede especificar que siempre verifique si se revocó una credencial.
- Marca de tiempo: Configuración que define la información de marca de hora que se aplica a la firma certificada. Una marca de hora indica que se establecieron datos específicos antes de un tiempo determinado. Este conocimiento ayuda a construir una relación de confianza entre el firmante y el verificador.
Guarde el documento de PDF certificado como archivo de PDF
Una vez que el servicio de firma certifica el documento de PDF, puede guardarlo como archivo de PDF para que los usuarios puedan abrirlo en Acrobat o Adobe Reader.
Consulte también
Certificar documentos del PDF mediante la API de Java
Certificar documentos del PDF mediante la API de servicio web
Inclusión de archivos de biblioteca Java de AEM Forms
Configuración de las propiedades de conexión
Certificar documentos del PDF mediante la API de Java certify-pdf-documents-using-the-java-api
Certificar un documento de PDF mediante la API de firma (Java):
-
Incluir archivos de proyecto
Incluya archivos JAR del cliente, como adobe-signatures-client.jar, en la ruta de clase de su proyecto Java.
-
Crear un cliente de firma
- Cree un
ServiceClientFactory
objeto que contiene propiedades de conexión. - Cree un
SignatureServiceClient
usando su constructor y pasando elServiceClientFactory
objeto.
- Cree un
-
Obtener el documento del PDF para certificar
- Cree un
java.io.FileInputStream
objeto que representa el documento de PDF que se va a certificar utilizando su constructor y pasando un valor de cadena que especifica la ubicación del documento de PDF. - Cree un
com.adobe.idp.Document
usando su constructor y pasando eljava.io.FileInputStream
objeto.
- Cree un
-
Certificar el documento del PDF
Certifique el documento del PDF invocando la variable
SignatureServiceClient
del objetocertify
y pasando los siguientes valores:- La variable
com.adobe.idp.Document
que representa el documento del PDF que se va a certificar. - Un valor de cadena que representa el nombre del campo de firma que contendrá la firma.
- A
Credential
que representa la credencial que se utiliza para certificar el documento del PDF. Cree unCredential
invocando el objetoCredential
estático del objetogetInstance
y pasando un valor de cadena que especifica el valor de alias que corresponde a la credencial de seguridad. - A
HashAlgorithm
objeto que especifica un miembro de datos estático que representa el algoritmo hash utilizado para resumir el documento del PDF. Por ejemplo, puede especificarHashAlgorithm.SHA1
para usar el algoritmo SHA1. - Un valor de cadena que representa el motivo por el que el documento de PDF está certificado.
- Valor de cadena que representa la información de contacto del firmante.
- A
MDPPermissions
objeto que especifica las acciones que se pueden realizar en el documento del PDF que invalida la firma. - A
PDFSignatureAppearanceOptions
que controla el aspecto de la firma certificada. Si lo desea, modifique el aspecto de la firma invocando un método comosetShowDate
. - Valor de cadena que proporciona una explicación de las acciones que invalidan la firma.
- A
java.lang.Boolean
objeto que especifica si se realizará la comprobación de revocación en el certificado del firmante. Si esta comprobación de revocación se realiza, se incrusta en la firma. El valor predeterminado esfalse
. - A
java.lang.Boolean
objeto que especifica si el campo de firma que se va a certificar está bloqueado. Si el campo está bloqueado, el campo de firma está marcado como de solo lectura, sus propiedades no se pueden modificar y nadie que no tenga los permisos necesarios no puede borrarlo. El valor predeterminado esfalse
. - Un
OCSPPreferences
objeto que almacena preferencias para la compatibilidad con el Protocolo de estado de certificado en línea (OCSP). Si no se realiza la comprobación de revocación, no se usa este parámetro y puede especificarnull
. Para obtener información sobre este objeto, consulte Referencia de la API de AEM Forms. - A
CRLPreferences
objeto que almacena las preferencias de lista de revocación de certificados (CRL). Si no se realiza la comprobación de revocación, no se usa este parámetro y puede especificarnull
. - A
TSPPreferences
objeto que almacena las preferencias de compatibilidad con el proveedor de marcas de hora (TSP). Por ejemplo, después de crear unTSPPreferences
, puede establecer la dirección URL del servidor TSP invocando la variableTSPPreferences
del objetosetTspServerURL
método. Este parámetro es opcional y puede sernull
. Para obtener más información, consulte Referencia de servicios para AEM Forms.
La variable
certify
el método devuelve uncom.adobe.idp.Document
objeto que representa el documento de PDF certificado. - La variable
-
Guarde el documento de PDF certificado como archivo de PDF
- Cree un
java.io.File
y asegúrese de que la extensión de archivo es .pdf. - Invocar el
com.adobe.idp.Document
del objetocopyToFile
para copiar el contenido delcom.adobe.idp.Document
al archivo.
- Cree un
Consulte también
Inicio rápido (modo SOAP): Certificación de un documento de PDF mediante la API de Java
Inclusión de archivos de biblioteca Java de AEM Forms
Configuración de las propiedades de conexión
Certificar documentos del PDF mediante la API de servicio web certify-pdf-documents-using-the-web-service-api
Certifique un documento del PDF mediante la API de firma (servicio web):
-
Incluir archivos de proyecto
Cree un proyecto de Microsoft .NET que utilice MTOM. Asegúrese de utilizar la siguiente definición WSDL:
http://localhost:8080/soap/services/SignatureService?WSDL&lc_version=9.0.1
.note note NOTE Reemplazar localhost
con la dirección IP del servidor que hospeda AEM Forms. -
Crear un cliente de firma
-
Cree un
SignatureServiceClient
usando su constructor predeterminado. -
Cree un
SignatureServiceClient.Endpoint.Address
usando la variableSystem.ServiceModel.EndpointAddress
constructor. Pase un valor de cadena que especifique el WSDL al servicio de AEM Forms (por ejemplo,http://localhost:8080/soap/services/SignatureService?WSDL
). No es necesario que use la variablelc_version
atributo. Este atributo se utiliza al crear una referencia de servicio). -
Cree un
System.ServiceModel.BasicHttpBinding
obteniendo el valor deSignatureServiceClient.Endpoint.Binding
campo . Conversión del valor devuelto aBasicHttpBinding
. -
Configure las variables
System.ServiceModel.BasicHttpBinding
del objetoMessageEncoding
campo aWSMessageEncoding.Mtom
. Este valor garantiza que se utilice MTOM. -
Habilite la autenticación HTTP básica realizando las siguientes tareas:
- Asignar el nombre de usuario de los formularios AEM al campo
SignatureServiceClient.ClientCredentials.UserName.UserName
. - Asignar el valor de contraseña correspondiente al campo
SignatureServiceClient.ClientCredentials.UserName.Password
. - Asignar el valor constante
HttpClientCredentialType.Basic
al campoBasicHttpBindingSecurity.Transport.ClientCredentialType
. - Asignar el valor constante
BasicHttpSecurityMode.TransportCredentialOnly
al campoBasicHttpBindingSecurity.Security.Mode
.
- Asignar el nombre de usuario de los formularios AEM al campo
-
-
Obtener el documento del PDF para certificar
- Cree un
BLOB
usando su constructor. La variableBLOB
se utiliza para almacenar un documento de PDF certificado. - Cree un
System.IO.FileStream
invocando su constructor y pasando un valor de cadena que representa la ubicación del archivo del documento PDF que se va a certificar y el modo en que se abre el archivo. - Cree una matriz de bytes que almacene el contenido del
System.IO.FileStream
objeto. Puede determinar el tamaño de la matriz de bytes obteniendo la variableSystem.IO.FileStream
del objetoLength
propiedad. - Rellene la matriz de bytes con los datos de flujo invocando la variable
System.IO.FileStream
del objetoRead
y pasando la matriz de bytes, la posición inicial y la longitud de flujo para leer. - Rellene el
BLOB
asignando suMTOM
miembro de datos el contenido de la matriz de bytes.
- Cree un
-
Certificar el documento del PDF
Certifique el documento del PDF invocando la variable
SignatureServiceClient
del objetocertify
y pasando los siguientes valores:- La variable
BLOB
que representa el documento del PDF que se va a certificar. - Un valor de cadena que representa el nombre del campo de firma que contendrá la firma.
- A
Credential
que representa la credencial que se utiliza para certificar el documento del PDF. Cree unCredential
utilizando su constructor y especifique el alias asignando un valor alCredential
del objetoalias
propiedad. - A
HashAlgorithm
objeto que especifica un miembro de datos estático que representa el algoritmo hash utilizado para resumir el documento del PDF. Por ejemplo, puede especificarHashAlgorithm.SHA1
para usar el algoritmo SHA1. - Un valor booleano que especifica si se utiliza el algoritmo hash.
- Un valor de cadena que representa el motivo por el que el documento de PDF está certificado.
- Valor de cadena que representa la ubicación del firmante.
- Valor de cadena que representa la información de contacto del firmante.
- Un
MDPPermissions
miembro de datos estáticos del objeto que especifica las acciones que se pueden realizar en el documento del PDF que invalidan la firma. - Un valor booleano que especifica si se utiliza la variable
MDPPermissions
objeto que se pasó como el valor del parámetro anterior. - Un valor de cadena que explica qué acciones invalidan la firma.
- A
PDFSignatureAppearanceOptions
que controla el aspecto de la firma certificada. Cree unPDFSignatureAppearanceOptions
usando su constructor. Puede modificar el aspecto de la firma estableciendo uno de sus miembros de datos. - A
System.Boolean
objeto que especifica si se realizará la comprobación de revocación en el certificado del firmante. Si esta comprobación de revocación se realiza, se incrusta en la firma. El valor predeterminado esfalse
. - A
System.Boolean
objeto que especifica si el campo de firma que se va a certificar está bloqueado. Si el campo está bloqueado, el campo de firma está marcado como de solo lectura, sus propiedades no se pueden modificar y nadie que no tenga los permisos necesarios no puede borrarlo. El valor predeterminado esfalse
. - A
System.Boolean
objeto que especifica si el campo de firma está bloqueado. Es decir, si pasatrue
al parámetro anterior y, a continuación, pasetrue
a este parámetro. - Un
OCSPPreferences
objeto que almacena preferencias para la compatibilidad con el Protocolo de estado de certificado en línea (OCSP), que proporciona información sobre el estado de la credencial que se utiliza para certificar el documento de PDF. Si no se realiza la comprobación de revocación, no se usa este parámetro y puede especificarnull
. - A
CRLPreferences
objeto que almacena las preferencias de lista de revocación de certificados (CRL). Si no se realiza la comprobación de revocación, no se usa este parámetro y puede especificarnull
. - A
TSPPreferences
objeto que almacena las preferencias de compatibilidad con el proveedor de marcas de hora (TSP). Por ejemplo, después de crear unTSPPreferences
, puede establecer la dirección URL del TSP estableciendo la variableTSPPreferences
del objetotspServerURL
miembro de datos. Este parámetro es opcional y puede sernull
.
La variable
certify
el método devuelve unBLOB
objeto que representa el documento de PDF certificado. - La variable
-
Guarde el documento de PDF certificado como archivo de PDF
- Cree un
System.IO.FileStream
invocando su constructor y pasando un valor de cadena que representa la ubicación del archivo del documento PDF que contendrá el documento PDF certificado y el modo en que se abre el archivo. - Cree una matriz de bytes que almacene el contenido del
BLOB
objeto devuelto por elcertify
método. Rellene la matriz de bytes obteniendo el valor de la variableBLOB
del objetobinaryData
miembro de datos. - Cree un
System.IO.BinaryWriter
invocando su constructor y pasando elSystem.IO.FileStream
objeto. - Escriba el contenido de la matriz de bytes en un archivo de PDF invocando la variable
System.IO.BinaryWriter
del objetoWrite
y pasando la matriz de bytes.
- Cree un
Consulte también
Invocación de AEM Forms mediante MTOM
Invocación de AEM Forms mediante SwaRef
Verificación de firmas digitales verifying-digital-signatures
Las firmas digitales se pueden verificar para garantizar que no se haya modificado un documento PDF firmado y que la firma digital sea válida. Al verificar una firma digital, puede comprobar el estado de la firma y las propiedades de la firma, como la identidad del firmante. Antes de confiar en una firma digital, se recomienda verificarla. Al verificar una firma digital, haga referencia a un documento de PDF que contenga una firma digital.
Supongamos que se desconoce la identidad del firmante. Cuando abre el documento del PDF en Acrobat, un mensaje de advertencia indica que la identidad del firmante es desconocida, como se muestra en la siguiente ilustración.
Del mismo modo, al verificar mediante programación una firma digital, puede determinar el estado de la identidad del firmante. Por ejemplo, si verifica la firma digital en el documento mostrado en la ilustración anterior, el resultado sería que la identidad del firmante es desconocida.
Resumen de los pasos summary_of_steps-6
Para verificar una firma digital, realice las siguientes tareas:
- Incluir archivos de proyecto.
- Cree un cliente de firma.
- Obtenga el documento del PDF que contiene la firma que desea verificar.
- Establezca las opciones de tiempo de ejecución de PKI.
- Compruebe la firma digital.
- Determine el estado de la firma.
- Determine la identidad del firmante.
Incluir archivos de proyecto
Incluya los archivos necesarios en el proyecto de desarrollo. Si está creando una aplicación cliente mediante Java, incluya los archivos JAR necesarios. Si utiliza servicios web, incluya los archivos proxy.
Los siguientes archivos JAR deben agregarse a la ruta de clase del proyecto:
- adobe-livecycle-client.jar
- adobe-usermanager-client.jar
- adobe-signatures-client.jar
- adobe-Utilities.jar (obligatorio si AEM Forms está implementado en JBoss)
- jbossall-client.jar (requerido si AEM Forms está implementado en JBoss)
Para obtener información sobre la ubicación de estos archivos JAR, consulte Inclusión de archivos de biblioteca Java de AEM Forms.
Crear un cliente de firma
Antes de realizar una operación de servicio de firma mediante programación, cree un cliente de servicio de firma.
Obtener el documento del PDF que contiene la firma para comprobar
Para comprobar una firma utilizada para firmar o certificar digitalmente un documento PDF, obtenga un documento PDF que contenga una firma.
Configurar las opciones de tiempo de ejecución de PKI
Establezca estas opciones en tiempo de ejecución de PKI que utiliza el servicio de firmas al verificar firmas en un documento de PDF:
- Hora de la verificación
- Comprobación de revocación
- Valores de marca de hora
Como parte de la configuración de estas opciones, puede especificar el tiempo de verificación. Por ejemplo, puede seleccionar la hora actual (la hora en el equipo del validador), que indica que se debe utilizar la hora actual. Para obtener información sobre los distintos valores de tiempo, consulte la VerificationTime
valor de enumeración en Referencia de la API de AEM Forms.
También puede especificar si desea realizar la comprobación de revocación como parte del proceso de verificación. Por ejemplo, puede realizar una comprobación de revocación para determinar si el certificado está revocado. Para obtener información sobre las opciones de comprobación de revocación, consulte la RevocationCheckStyle
valor de enumeración en Referencia de la API de AEM Forms.
Para realizar la comprobación de revocación en un certificado, especifique una URL para un servidor de lista de revocación de certificados (CRL) utilizando un CRLOptionSpec
objeto. Sin embargo, si no especifica una URL para el servidor CRL, el servicio de firma obtiene la URL del certificado.
En lugar de utilizar un servidor CRL, puede utilizar un servidor de protocolo de estado de certificado en línea (OCSP) al realizar la comprobación de revocación. Normalmente, cuando se utiliza un servidor OCSP en lugar de un servidor CRL, la comprobación de revocación se realiza más rápido. (Consulte Protocolo de estado de certificado en línea.)
Puede establecer el orden del servidor CRL y OCSP que utiliza el servicio de firmas mediante el uso de Aplicaciones y Servicios de Adobe. Por ejemplo, si el servidor OCSP se configura primero en Aplicaciones y Servicios de Adobe, se comprueba el servidor OCSP, seguido del servidor CRL.
Si no realiza la comprobación de revocación, el servicio de firma no comprueba si el certificado está revocado. Es decir, se ignora la información del servidor CRL y OCSP.
CRLOptionSpec
y OCSPOptionSpec
objeto. Por ejemplo, para anular el servidor CRL, puede invocar la variable CRLOptionSpec
del objeto setLocalURI
método.La marca de hora es el proceso de seguimiento del momento en que se modificó un documento firmado o certificado. Después de firmar un documento, nadie puede modificarlo. La marca de hora ayuda a hacer cumplir la validez de un documento firmado o certificado. Puede establecer las opciones de marca de hora mediante un TSPOptionSpec
objeto. Por ejemplo, puede especificar la URL de un servidor de proveedor de marca de hora (TSP).
VerificationTime.CURRENT_TIME
y la comprobación de revocación está configurada en RevocationCheckStyle.BestEffort
. Dado que no se especifica ninguna CRL ni información del servidor OCSP, la información del servidor se obtiene del certificado.Verificar la firma digital
Para verificar correctamente una firma, especifique el nombre completo del campo de firma que contiene la firma, como form1[0].#subform[1].SignatureField3[3]
. Al utilizar un campo de formulario XFA, también puede utilizar el nombre parcial del campo de firma : SignatureField3
.
De forma predeterminada, el servicio de firma limita la cantidad de tiempo que se puede firmar un documento después del tiempo de validación a 65 minutos. Si un usuario intenta verificar una firma en el momento actual y la hora de firma es posterior a la hora actual y está dentro de los 65 minutos, el servicio de firma no crea un error de verificación.
Determinar el estado de la firma
Como parte de la verificación de una firma digital, puede comprobar el estado de la firma.
Determinar la identidad del firmante
Puede determinar la identidad del firmante, que puede ser uno de los siguientes valores:
- Unknown: Este firmante es desconocido porque no se puede realizar la verificación del firmante.
- De confianza: Este firmante es de confianza.
- No confiable: Este firmante no es de confianza.
Consulte también
Verificación de firmas digitales mediante la API de Java
Verificación de firmas digitales mediante la API de servicio web
Inclusión de archivos de biblioteca Java de AEM Forms
Configuración de las propiedades de conexión
Verificación de firmas digitales mediante la API de Java verify-digital-signatures-using-the-java-api
Compruebe una firma digital utilizando la API del servicio de firma (Java):
-
Incluir archivos de proyecto
Incluya archivos JAR del cliente, como adobe-signatures-client.jar, en la ruta de clase de su proyecto Java.
-
- Cree un
ServiceClientFactory
objeto que contiene propiedades de conexión. - Cree un
SignatureServiceClient
usando su constructor y pasando elServiceClientFactory
objeto.
- Cree un
-
Obtener el documento del PDF que contiene la firma para comprobar
- Cree un
java.io.FileInputStream
objeto que representa el documento de PDF que contiene la firma que se va a comprobar utilizando su constructor. Pase un valor de cadena que especifique la ubicación del documento del PDF. - Cree un
com.adobe.idp.Document
usando su constructor y pasando eljava.io.FileInputStream
objeto.
- Cree un
-
Configurar las opciones de tiempo de ejecución de PKI
- Cree un
PKIOptions
usando su constructor. - Establezca el tiempo de verificación invocando la variable
PKIOptions
del objetosetVerificationTime
método y pasar unaVerificationTime
valor de enumeración que especifica el tiempo de verificación. - Establezca la opción de comprobación de revocación invocando
PKIOptions
del objetosetRevocationCheckStyle
método y pasar unaRevocationCheckStyle
valor de enumeración que especifica si se realizará la comprobación de revocación.
- Cree un
-
Verificar la firma digital
Compruebe la firma invocando la variable
SignatureServiceClient
del objetoverify2
y pasando los siguientes valores:- A
com.adobe.idp.Document
objeto que contiene un documento PDF certificado o firmado digitalmente. - Valor de cadena que representa el nombre del campo de firma que contiene la firma que se va a verificar.
- A
PKIOptions
que contiene opciones de tiempo de ejecución PKI. - A
VerifySPIOptions
instancia que contiene información de SPI. Puede especificarnull
para este parámetro.
La variable
verify2
el método devuelve unPDFSignatureVerificationInfo
objeto que contiene información que se puede utilizar para verificar la firma digital. - A
-
Determinar el estado de la firma
- Determine el estado de la firma invocando la variable
PDFSignatureVerificationInfo
del objetogetStatus
método. Este método devuelve unSignatureStatus
objeto que especifica el estado de firma. Por ejemplo, si no se modifica un documento de PDF firmado, este método devuelveSignatureStatus.DocumentSigNoChanges
.
- Determine el estado de la firma invocando la variable
-
Determinar la identidad del firmante
- Determine la identidad del firmante invocando la variable
PDFSignatureVerificationInfo
del objetogetSigner
método. Este método devuelve unIdentityInformation
objeto. - Invocar el
IdentityInformation
del objetogetStatus
para determinar la identidad del firmante. Este método devuelve unIdentityStatus
valor de enumeración que especifica la identidad. Por ejemplo, si el firmante es de confianza, este método devuelveIdentityStatus.TRUSTED
.
- Determine la identidad del firmante invocando la variable
Consulte también
Verificación de firmas digitales
Inicio rápido (modo SOAP): Verificación de una firma digital mediante la API de Java
Inclusión de archivos de biblioteca Java de AEM Forms
Configuración de las propiedades de conexión
Verificación de firmas digitales mediante la API de servicio web verify-digital-signatures-using-the-web-service-api
Compruebe una firma digital utilizando la API del servicio de firma (servicio web):
-
Incluir archivos de proyecto
Cree un proyecto de Microsoft .NET que utilice MTOM. Asegúrese de utilizar la siguiente definición WSDL:
http://localhost:8080/soap/services/SignatureService?WSDL&lc_version=9.0.1
.note note NOTE Reemplazar localhost
con la dirección IP del servidor que hospeda AEM Forms. -
Crear un cliente de firma
-
Cree un
SignatureServiceClient
usando su constructor predeterminado. -
Cree un
SignatureServiceClient.Endpoint.Address
usando la variableSystem.ServiceModel.EndpointAddress
constructor. Pase un valor de cadena que especifique el WSDL al servicio de AEM Forms (por ejemplo,http://localhost:8080/soap/services/SignatureService?WSDL
). No es necesario que use la variablelc_version
atributo. Este atributo se utiliza al crear una referencia de servicio). -
Cree un
System.ServiceModel.BasicHttpBinding
obteniendo el valor deSignatureServiceClient.Endpoint.Binding
campo . Conversión del valor devuelto aBasicHttpBinding
. -
Configure las variables
System.ServiceModel.BasicHttpBinding
del objetoMessageEncoding
campo aWSMessageEncoding.Mtom
. Este valor garantiza que se utilice MTOM. -
Habilite la autenticación HTTP básica realizando las siguientes tareas:
- Asignar el nombre de usuario de los formularios AEM al campo
SignatureServiceClient.ClientCredentials.UserName.UserName
. - Asignar el valor de contraseña correspondiente al campo
SignatureServiceClient.ClientCredentials.UserName.Password
. - Asignar el valor constante
HttpClientCredentialType.Basic
al campoBasicHttpBindingSecurity.Transport.ClientCredentialType
. - Asignar el valor constante
BasicHttpSecurityMode.TransportCredentialOnly
al campoBasicHttpBindingSecurity.Security.Mode
.
- Asignar el nombre de usuario de los formularios AEM al campo
-
-
Obtener el documento del PDF que contiene la firma para comprobar
- Cree un
BLOB
usando su constructor. La variableBLOB
se utiliza para almacenar un documento de PDF que contiene una firma digital o certificada que se debe verificar. - Cree un
System.IO.FileStream
invocando su constructor. Pase un valor de cadena que represente la ubicación del archivo del documento del PDF firmado y el modo en que se abre el archivo. - Cree una matriz de bytes que almacene el contenido del
System.IO.FileStream
objeto. Puede determinar el tamaño de la matriz de bytes obteniendo la variableSystem.IO.FileStream
del objetoLength
propiedad. - Rellene la matriz de bytes con los datos de flujo invocando la variable
System.IO.FileStream
del objetoRead
método. Pase la matriz de bytes, la posición de inicio y la longitud del flujo para leerlos. - Rellene el
BLOB
asignando suMTOM
propiedad del contenido de la matriz de bytes.
- Cree un
-
Configurar las opciones de tiempo de ejecución de PKI
- Cree un
PKIOptions
usando su constructor. - Configure la hora de verificación asignando la variable
PKIOptions
del objetoverificationTime
miembro de datos aVerificationTime
valor de enumeración que especifica el tiempo de verificación. - Establezca la opción de comprobación de revocación asignando la variable
PKIOptions
del objetorevocationCheckStyle
miembro de datos aRevocationCheckStyle
valor de enumeración que especifica si se realizará la comprobación de revocación.
- Cree un
-
Verificar la firma digital
Compruebe la firma invocando la variable
SignatureServiceClient
del objetoverify2
y pasando los siguientes valores:- La variable
BLOB
objeto que contiene un documento PDF certificado o firmado digitalmente. - Valor de cadena que representa el nombre del campo de firma que contiene la firma que se va a verificar.
- A
PKIOptions
que contiene opciones de tiempo de ejecución PKI. - A
VerifySPIOptions
instancia que contiene información de SPI. Puede especificarnull
para este parámetro.
La variable
verify2
el método devuelve unPDFSignatureVerificationInfo
objeto que contiene información que se puede utilizar para verificar la firma digital. - La variable
-
Determinar el estado de la firma
Determine el estado de la firma obteniendo el valor de la variable
PDFSignatureVerificationInfo
del objetostatus
miembro de datos. Este miembro de datos almacena unSignatureStatus
objeto que especifica el estado de la firma. Por ejemplo, si se modifica un documento de PDF firmado, la variablestatus
el miembro de datos almacena el valorSignatureStatus.DocumentSigNoChanges
. -
Determinar la identidad del firmante
- Determine la identidad del firmante recuperando el valor de la variable
PDFSignatureVerificationInfo
del objetosigner
miembro de datos. Este miembro devuelve unIdentityInformation
objeto. - Recupere el
IdentityInformation
del objetostatus
miembro de datos para determinar la identidad del firmante. Este miembro de datos devuelve unIdentityStatus
valor de enumeración que especifica la identidad. Por ejemplo, si el firmante es de confianza, este miembro devuelveIdentityStatus.TRUSTED
.
- Determine la identidad del firmante recuperando el valor de la variable
Consulte también
Verificación de firmas digitales
Invocación de AEM Forms mediante MTOM
Invocación de AEM Forms mediante SwaRef
Verificación de varias firmas digitales verifying-multiple-digital-signatures
AEM Forms proporciona los medios para verificar todas las firmas digitales que se encuentran en un documento de PDF. Supongamos que un documento de PDF contiene varias firmas digitales como resultado de un proceso empresarial que requiere firmas de varios firmantes. Por ejemplo, considere una transacción financiera que requiera la firma de un agente de préstamos y de un administrador. Puede utilizar la API de Java o la API de servicio web del servicio de firma para comprobar todas las firmas del documento del PDF. Al comprobar varias firmas digitales, puede comprobar el estado y las propiedades de cada firma. Antes de confiar en una firma digital, se recomienda verificarla. Se recomienda que esté familiarizado con la verificación de una sola firma digital.
Resumen de los pasos summary_of_steps-7
Para verificar varias firmas digitales, realice las siguientes tareas:
- Incluir archivos de proyecto.
- Cree un cliente de firma.
- Obtenga el documento del PDF que contiene las firmas que desea verificar.
- Establezca las opciones de tiempo de ejecución de PKI.
- Recupere todas las firmas digitales.
- Iterar a través de todas las firmas.
Incluir archivos de proyecto
Incluya los archivos necesarios en el proyecto de desarrollo. Si está creando una aplicación cliente mediante Java, incluya los archivos JAR necesarios. Si utiliza servicios web, incluya los archivos proxy.
Los siguientes archivos JAR deben agregarse a la ruta de clase del proyecto:
- adobe-livecycle-client.jar
- adobe-usermanager-client.jar
- adobe-signatures-client.jar
- adobe-Utilities.jar (obligatorio si AEM Forms está implementado en JBoss)
- jbossall-client.jar (requerido si AEM Forms está implementado en JBoss)
Para obtener información sobre la ubicación de estos archivos JAR, consulte Inclusión de archivos de biblioteca Java de AEM Forms.
Crear un cliente de firma
Antes de realizar una operación de servicio de firma mediante programación, cree un cliente de servicio de firma.
Obtenga el documento del PDF que contiene las firmas que desea verificar
Para comprobar una firma utilizada para firmar o certificar digitalmente un documento PDF, obtenga un documento PDF que contenga una firma.
Establecer opciones de tiempo de ejecución de PKI
Establezca estas opciones en tiempo de ejecución de PKI que utiliza el servicio de firmas al verificar todas las firmas en un documento de PDF:
- Hora de la verificación
- Comprobación de revocación
- Valores de marca de hora
Como parte de la configuración de estas opciones, puede especificar el tiempo de verificación. Por ejemplo, puede seleccionar la hora actual (la hora en el equipo del validador), que indica que se debe utilizar la hora actual. Para obtener información sobre los distintos valores de tiempo, consulte la VerificationTime
valor de enumeración en Referencia de la API de AEM Forms.
También puede especificar si desea realizar la comprobación de revocación como parte del proceso de verificación. Por ejemplo, puede realizar una comprobación de revocación para determinar si el certificado está revocado. Para obtener información sobre las opciones de comprobación de revocación, consulte la RevocationCheckStyle
valor de enumeración en Referencia de la API de AEM Forms.
Para realizar la comprobación de revocación en un certificado, especifique una URL para un servidor de lista de revocación de certificados (CRL) utilizando un CRLOptionSpec
objeto. Sin embargo, si no especifica una URL a un servidor CRL, el servicio de firmas obtiene la URL del certificado.
En lugar de utilizar un servidor CRL, puede utilizar un servidor de protocolo de estado de certificado en línea (OCSP) al realizar la comprobación de revocación. Normalmente, cuando se utiliza un servidor OCSP en lugar de un servidor CRL, la comprobación de revocación se realiza más rápido. (Consulte Protocolo de estado de certificado en línea.)
Puede establecer el orden del servidor CRL y OCSP que utiliza el servicio de firmas mediante el uso de Aplicaciones y Servicios de Adobe. Por ejemplo, si el servidor OCSP se configura primero en Aplicaciones y Servicios de Adobe, el servidor OCSP se marca, seguido del servidor CRL.
Si no realiza la comprobación de revocación, el servicio de firma no comprueba si el certificado está revocado. Es decir, se ignora la información del servidor CRL y OCSP.
CRLOptionSpec
y OCSPOptionSpec
objeto. Por ejemplo, para anular el servidor CRL, puede invocar la variable CRLOptionSpec
del objeto setLocalURI
método.La marca de hora es el proceso de seguimiento del momento en que se modificó un documento firmado o certificado. Después de firmar un documento, nadie puede modificarlo. La marca de hora ayuda a hacer cumplir la validez de un documento firmado o certificado. Puede establecer las opciones de marca de hora utilizando un TSPOptionSpec
objeto. Por ejemplo, puede especificar la URL de un servidor de proveedor de marca de hora (TSP).
VerificationTime.CURRENT_TIME
y la comprobación de revocación está configurada en RevocationCheckStyle.BestEffort
. Dado que no se especifica ninguna CRL ni información del servidor OCSP, la información del servidor se obtiene del certificado.Recuperar todas las firmas digitales
Para comprobar todas las firmas digitales ubicadas en un documento de PDF, recupere las firmas digitales del documento de PDF. Todas las firmas se devuelven en una lista. Como parte de la verificación de una firma digital, compruebe el estado de la firma.
Iterar a través de todas las firmas
Iterar a través de cada firma. Es decir, para cada firma, verifique la firma digital y compruebe la identidad del firmante y el estado de cada firma. (Consulte Verificación de firmas digitales.)
Consulte también
Verificar varias firmas digitales mediante la API de Java
Verificación de varias firmas digitales mediante la API de servicio web
Inclusión de archivos de biblioteca Java de AEM Forms
Configuración de las propiedades de conexión
Verificar varias firmas digitales mediante la API de Java verify-multiple-digital-signatures-using-the-java-api
Compruebe varias firmas digitales mediante la API del servicio de firma (Java):
-
Incluir archivos de proyecto
Incluya archivos JAR del cliente, como adobe-signatures-client.jar, en la ruta de clase de su proyecto Java.
-
Crear un cliente de firma
- Cree un
ServiceClientFactory
objeto que contiene propiedades de conexión. - Cree un
SignatureServiceClient
usando su constructor y pasando elServiceClientFactory
objeto.
- Cree un
-
Obtenga el documento del PDF que contiene las firmas que desea verificar
- Cree un
java.io.FileInputStream
objeto que representa el documento de PDF que contiene varias firmas digitales que se deben comprobar mediante su constructor. Pase un valor de cadena que especifique la ubicación del documento del PDF. - Cree un
com.adobe.idp.Document
usando su constructor y pasando eljava.io.FileInputStream
objeto.
- Cree un
-
Establecer opciones de tiempo de ejecución de PKI
- Cree un
PKIOptions
usando su constructor. - Establezca el tiempo de verificación invocando la variable
PKIOptions
del objetosetVerificationTime
método y pasar unaVerificationTime
valor de enumeración que especifica el tiempo de verificación. - Establezca la opción de comprobación de revocación invocando
PKIOptions
del objetosetRevocationCheckStyle
método y pasar unaRevocationCheckStyle
valor de enumeración que especifica si se realizará la comprobación de revocación.
- Cree un
-
Recuperar todas las firmas digitales
Invocar el
SignatureServiceClient
del objetoverifyPDFDocument
y pase los siguientes valores:- A
com.adobe.idp.Document
objeto que contiene un documento de PDF que contiene varias firmas digitales. - A
PKIOptions
que contiene opciones de tiempo de ejecución PKI. - A
VerifySPIOptions
instancia que contiene información de SPI. Puede especificarnull
para este parámetro.
La variable
verifyPDFDocument
el método devuelve unPDFDocumentVerificationInfo
objeto que contiene información sobre todas las firmas digitales ubicadas en el documento del PDF. - A
-
Iterar a través de todas las firmas
- Interrumpa todas las firmas invocando la variable
PDFDocumentVerificationInfo
del objetogetVerificationInfos
método. Este método devuelve unjava.util.List
objeto donde cada elemento es unPDFSignatureVerificationInfo
objeto. Utilice unjava.util.Iterator
para iterar en la lista de firmas. - Al usar la variable
PDFSignatureVerificationInfo
, puede realizar tareas como determinar el estado de la firma invocando la variablePDFSignatureVerificationInfo
del objetogetStatus
método. Este método devuelve unSignatureStatus
cuyo miembro de datos estáticos le informa sobre el estado de la firma. Por ejemplo, si la firma es desconocida, este método devuelveSignatureStatus.DocumentSignatureUnknown
.
- Interrumpa todas las firmas invocando la variable
Consulte también
Verificación de varias firmas digitales
Inicio rápido (modo SOAP): Verificación de varias firmas digitales mediante la API de Java
Inclusión de archivos de biblioteca Java de AEM Forms
Verificación de firmas digitales
Configuración de las propiedades de conexión
Verificación de varias firmas digitales mediante la API de servicio web verifying-multiple-digital-signatures-using-the-web-service-api
Compruebe varias firmas digitales mediante la API del servicio de firma (servicio web):
-
Incluir archivos de proyecto
Cree un proyecto de Microsoft .NET que utilice MTOM. Asegúrese de utilizar la siguiente definición WSDL:
http://localhost:8080/soap/services/SignatureService?WSDL&lc_version=9.0.1
.note note NOTE Reemplazar localhost
con la dirección IP del servidor que hospeda AEM Forms. -
Crear un cliente de firma
-
Cree un
SignatureServiceClient
usando su constructor predeterminado. -
Cree un
SignatureServiceClient.Endpoint.Address
usando la variableSystem.ServiceModel.EndpointAddress
constructor. Pase un valor de cadena que especifique el WSDL al servicio de AEM Forms (por ejemplo,http://localhost:8080/soap/services/SignatureService?WSDL
). No es necesario que use la variablelc_version
atributo. Este atributo se utiliza al crear una referencia de servicio). -
Cree un
System.ServiceModel.BasicHttpBinding
obteniendo el valor deSignatureServiceClient.Endpoint.Binding
campo . Conversión del valor devuelto aBasicHttpBinding
. -
Configure las variables
System.ServiceModel.BasicHttpBinding
del objetoMessageEncoding
campo aWSMessageEncoding.Mtom
. Este valor garantiza que se utilice MTOM. -
Habilite la autenticación HTTP básica realizando las siguientes tareas:
- Asignar el nombre de usuario de los formularios AEM al campo
SignatureServiceClient.ClientCredentials.UserName.UserName
. - Asignar el valor de contraseña correspondiente al campo
SignatureServiceClient.ClientCredentials.UserName.Password
. - Asignar el valor constante
HttpClientCredentialType.Basic
al campoBasicHttpBindingSecurity.Transport.ClientCredentialType
. - Asignar el valor constante
BasicHttpSecurityMode.TransportCredentialOnly
al campoBasicHttpBindingSecurity.Security.Mode
.
- Asignar el nombre de usuario de los formularios AEM al campo
-
-
Obtenga el documento del PDF que contiene las firmas que desea verificar
- Cree un
BLOB
usando su constructor. La variableBLOB
almacena un documento de PDF que contiene varias firmas digitales que comprobar. - Cree un
System.IO.FileStream
invocando su constructor. Pase un valor de cadena que represente la ubicación del archivo del documento del PDF y el modo en que se abre el archivo. - Cree una matriz de bytes que almacene el contenido del
System.IO.FileStream
objeto. Puede determinar el tamaño de la matriz de bytes obteniendo la variableSystem.IO.FileStream
del objetoLength
propiedad. - Rellene la matriz de bytes con los datos de flujo invocando la variable
System.IO.FileStream
del objetoRead
método. Pase la matriz de bytes, la posición de inicio y la longitud del flujo para leerlos. - Rellene el
BLOB
asignando suMTOM
propiedad del contenido de la matriz de bytes.
- Cree un
-
Establecer opciones de tiempo de ejecución de PKI
- Cree un
PKIOptions
usando su constructor. - Configure la hora de verificación asignando la variable
PKIOptions
del objetoverificationTime
miembro de datos aVerificationTime
valor de enumeración que especifica el tiempo de verificación. - Establezca la opción de comprobación de revocación asignando la variable
PKIOptions
del objetorevocationCheckStyle
miembro de datos aRevocationCheckStyle
valor de enumeración que especifica si se realizará la comprobación de revocación.
- Cree un
-
Recuperar todas las firmas digitales
Invocar el
SignatureServiceClient
del objetoverifyPDFDocument
y pase los siguientes valores:- A
BLOB
objeto que contiene un documento de PDF que contiene varias firmas digitales. - A
PKIOptions
que contiene opciones de tiempo de ejecución PKI. - A
VerifySPIOptions
instancia que contiene información de SPI. Puede especificar null para este parámetro.
La variable
verifyPDFDocument
el método devuelve unPDFDocumentVerificationInfo
objeto que contiene información sobre todas las firmas digitales ubicadas en el documento del PDF. - A
-
Iterar a través de todas las firmas
- Iterar a través de todas las firmas obteniendo el
PDFDocumentVerificationInfo
del objetoverificationInfos
miembro de datos. Este miembro de datos devuelve unObject
matriz donde cada elemento es unPDFSignatureVerificationInfo
objeto. - Al usar la variable
PDFSignatureVerificationInfo
, puede realizar tareas como determinar el estado de la firma obteniendo la variablePDFSignatureVerificationInfo
del objetostatus
miembro de datos. Este miembro de datos devuelve unSignatureStatus
cuyo miembro de datos estáticos le informa sobre el estado de la firma. Por ejemplo, si la firma es desconocida, este método devuelveSignatureStatus.DocumentSignatureUnknown
.
- Iterar a través de todas las firmas obteniendo el
Consulte también
Verificación de varias firmas digitales
Invocación de AEM Forms mediante MTOM
Invocación de AEM Forms mediante SwaRef
Eliminación de firmas digitales removing-digital-signatures
Las firmas digitales deben eliminarse de un campo de firma para poder aplicar una firma digital más reciente. No se puede sobrescribir una firma digital. Si intenta aplicar una firma digital a un campo de firma que contenga una firma, se producirá una excepción.
Resumen de los pasos summary_of_steps-8
Para quitar una firma digital de un campo de firma, realice las tareas siguientes:
- Incluir archivos de proyecto.
- Cree un cliente de firma.
- Obtenga el documento del PDF que contiene una firma que se va a quitar.
- Elimine la firma digital del campo de firma.
- Guarde el documento de PDF como archivo de PDF.
Incluir archivos de proyecto
Incluya los archivos necesarios en el proyecto de desarrollo. Si está creando una aplicación cliente utilizando Java, incluya los archivos JAR necesarios. Si utiliza servicios web, asegúrese de incluir los archivos proxy.
Los siguientes archivos JAR deben agregarse a la ruta de clase del proyecto:
- adobe-livecycle-client.jar
- adobe-usermanager-client.jar
- adobe-signatures-client.jar
- adobe-Utilities.jar (obligatorio si AEM Forms está implementado en JBoss)
- jbossall-client.jar (requerido si AEM Forms está implementado en JBoss)
Para obtener información sobre la ubicación de estos archivos JAR, consulte Inclusión de archivos de biblioteca Java de AEM Forms.
Crear un cliente de firma
Para poder realizar una operación de servicio de firma mediante programación, debe crear un cliente de servicio de firma.
Obtener el documento del PDF que contiene una firma para quitar
Para quitar una firma de un documento de PDF, debe obtener un documento de PDF que contenga una firma.
Eliminación de la firma digital del campo de firma
Para quitar correctamente una firma digital de un documento de PDF, debe especificar el nombre del campo de firma que contiene la firma digital. Además, debe tener permiso para eliminar la firma digital; de lo contrario, se produce una excepción.
Guarde el documento del PDF como archivo del PDF
Una vez que el servicio de firma elimina una firma digital de un campo de firma, puede guardar el documento PDF como archivo PDF para que los usuarios puedan abrirlo en Acrobat o Adobe Reader.
Consulte también
Eliminación de firmas digitales mediante la API de Java
Eliminación de firmas digitales mediante la API de servicio web
Inclusión de archivos de biblioteca Java de AEM Forms
Configuración de las propiedades de conexión
Eliminación de firmas digitales mediante la API de Java remove-digital-signatures-using-the-java-api
Elimine una firma digital utilizando la API de firma (Java):
-
Incluir archivos de proyecto
Incluya archivos JAR del cliente, como adobe-signatures-client.jar, en la ruta de clase de su proyecto Java.
-
Cree un cliente de firma.
- Cree un
ServiceClientFactory
objeto que contiene propiedades de conexión. - Cree un
SignatureServiceClient
usando su constructor y pasando elServiceClientFactory
objeto.
- Cree un
-
Obtener el documento del PDF que contiene una firma para quitar
- Cree un
java.io.FileInputStream
objeto que representa el documento de PDF que contiene la firma que se va a quitar mediante su constructor y pasando un valor de cadena que especifica la ubicación del documento de PDF. - Cree un
com.adobe.idp.Document
usando su constructor y pasando eljava.io.FileInputStream
objeto.
- Cree un
-
Eliminación de la firma digital del campo de firma
Eliminar una firma digital de un campo de firma invocando la variable
SignatureServiceClient
del objetoclearSignatureField
y pasando los siguientes valores:- A
com.adobe.idp.Document
que representa el documento del PDF que contiene la firma que se va a quitar. - Un valor de cadena que especifica el nombre del campo de firma que contiene la firma digital.
La variable
clearSignatureField
el método devuelve uncom.adobe.idp.Document
objeto que representa el documento PDF del que se ha eliminado la firma digital. - A
-
Guarde el documento del PDF como archivo del PDF
- Cree un
java.io.File
y asegúrese de que la extensión de archivo es .pdf. - Invocar el
com.adobe.idp.Document
del objetocopyToFile
método. Pase eljava.io.File
para copiar el contenido delcom.adobe.idp.Document
al archivo. Asegúrese de usar la variableDocument
objeto devuelto por elclearSignatureField
método.
- Cree un
Consulte también
Eliminación de firmas digitales
Inicio rápido (modo SOAP): Eliminación de una firma digital mediante la API de Java
Inclusión de archivos de biblioteca Java de AEM Forms
Configuración de las propiedades de conexión
Eliminación de firmas digitales mediante la API de servicio web remove-digital-signatures-using-the-web-service-api
Elimine una firma digital mediante la API de firma (servicio web):
-
Incluir archivos de proyecto
Cree un proyecto de Microsoft .NET que utilice MTOM. Asegúrese de utilizar la siguiente definición WSDL:
http://localhost:8080/soap/services/SignatureService?WSDL&lc_version=9.0.1
.note note NOTE Reemplazar localhost
con la dirección IP del servidor que hospeda AEM Forms. -
Crear un cliente de firma
-
Cree un
SignatureServiceClient
usando su constructor predeterminado. -
Cree un
SignatureServiceClient.Endpoint.Address
usando la variableSystem.ServiceModel.EndpointAddress
constructor. Pase un valor de cadena que especifique el WSDL al servicio de AEM Forms (por ejemplo,http://localhost:8080/soap/services/SignatureService?WSDL
). No es necesario que use la variablelc_version
atributo. Este atributo se utiliza al crear una referencia de servicio). -
Cree un
System.ServiceModel.BasicHttpBinding
obteniendo el valor deSignatureServiceClient.Endpoint.Binding
campo . Conversión del valor devuelto aBasicHttpBinding
. -
Configure las variables
System.ServiceModel.BasicHttpBinding
del objetoMessageEncoding
campo aWSMessageEncoding.Mtom
. Este valor garantiza que se utilice MTOM. -
Habilite la autenticación HTTP básica realizando las siguientes tareas:
- Asignar el nombre de usuario de los formularios AEM al campo
SignatureServiceClient.ClientCredentials.UserName.UserName
. - Asignar el valor de contraseña correspondiente al campo
SignatureServiceClient.ClientCredentials.UserName.Password
. - Asignar el valor constante
HttpClientCredentialType.Basic
al campoBasicHttpBindingSecurity.Transport.ClientCredentialType
. - Asignar el valor constante
BasicHttpSecurityMode.TransportCredentialOnly
al campoBasicHttpBindingSecurity.Security.Mode
.
- Asignar el nombre de usuario de los formularios AEM al campo
-
-
Obtener el documento del PDF que contiene una firma para quitar
- Cree un
BLOB
usando su constructor. La variableBLOB
se utiliza para almacenar un documento de PDF que contiene una firma digital que se va a quitar. - Cree un
System.IO.FileStream
invocando su constructor y pasando un valor de cadena que representa la ubicación del archivo del documento PDF firmado y el modo en que se abre el archivo. - Cree una matriz de bytes que almacene el contenido del
System.IO.FileStream
objeto. Puede determinar el tamaño de la matriz de bytes obteniendo la variableSystem.IO.FileStream
del objetoLength
propiedad. - Rellene la matriz de bytes con los datos de flujo invocando la variable
System.IO.FileStream
del objetoRead
método. Pase la matriz de bytes, la posición de inicio y la longitud del flujo para leerlos. - Rellene el
BLOB
asignando suMTOM
con el contenido de la matriz de bytes.
- Cree un
-
Eliminación de la firma digital del campo de firma
Elimine la firma digital invocando la variable
SignatureServiceClient
del objetoclearSignatureField
y pasando los siguientes valores:- A
BLOB
objeto que contiene el documento de PDF firmado. - Valor de cadena que representa el nombre del campo de firma que contiene la firma digital que se va a quitar.
La variable
clearSignatureField
el método devuelve unBLOB
objeto que representa el documento PDF del que se ha eliminado la firma digital. - A
-
Guarde el documento del PDF como archivo del PDF
- Cree un
System.IO.FileStream
invocando su constructor y pasando un valor de cadena que representa la ubicación del archivo del documento PDF que contiene un campo de firma vacío y el modo en que se abre el archivo. - Cree una matriz de bytes que almacene el contenido del
BLOB
objeto devuelto por elsign
método. Rellene la matriz de bytes obteniendo el valor de la variableBLOB
del objetoMTOM
miembro de datos. - Cree un
System.IO.BinaryWriter
invocando su constructor y pasando elSystem.IO.FileStream
objeto. - Escriba el contenido de la matriz de bytes en el archivo de PDF invocando la variable
System.IO.BinaryWriter
del objetoWrite
y pasando la matriz de bytes.
- Cree un
Consulte también
Eliminación de firmas digitales
Invocación de AEM Forms mediante MTOM
Invocación de AEM Forms mediante SwaRef