Aller au contenu principal

Signature électronique

L'objet signature ajoute une signature numérique cryptographique au PDF et au DOCX générés. Les signatures fournissent la non-répudiation et la détection de falsification : toute modification du fichier signé invalide la signature.

Propriétés​

PropriétéTypeDéfautDescription
fieldNamestring—Nom du champ de formulaire de signature
positionobject—Position fixe sur la page (voir ci-dessous)
appearanceobject—Apparence visuelle du bloc de signature
signatureCreatorstring—Nom de l'application enregistrée comme créateur de signature
signingTypestring"PAdES"Norme de signature : PAdES ou Detached
certificatestring—La clé de signature : un fichier PKCS#12 (.p12/.pfx) par son chemin (certs/signer.p12), ou le nom d'une clé que vous gardez dans votre propre coffre (contracts). Obligatoire
passwordstring—Le mot de passe du fichier de certificat ; absent ou vide, c'est le mot de passe vide. Une clé de votre propre coffre n'en prend aucun
contactInfostring—Informations de contact du signataire
timestampServerstring—URL d'une autorité d'horodatage RFC 3161 (optionnel)
visiblebooleantrueSi le bloc de signature est visible sur la page
claimedSignDatestringheure de générationL'heure de signature que le signataire affirme, en date et heure ISO 8601 (2026-09-01T14:30:00Z)
digeststring"sha256"L'empreinte sur laquelle la signature est calculée : sha256, sha384 ou sha512
certificationLevelstring"noChanges"Quelles modifications sont autorisées après la signature
fieldLockobject—Verrouiller les champs de formulaire spécifiques après la signature

Où la clé est conservée​

Téléversez le fichier PKCS#12 dans le dossier certs de votre espace de travail, puis nommez-le par ce chemin (certs/signer.p12) :

POST /v1/{tenantId}/assets/certs
Content-Type: multipart/form-data

file: signer.p12

Le dossier accepte les fichiers .p12 et .pfx jusqu'à 64 Ko. Une clé est listée par son nom et peut être remplacée ou supprimée ; elle n'est jamais restituée. Un document dont la signature ne peut pas être apposée est refusé (SIGNATURE_NOT_APPLIED) : il n'est ni stocké ni comptabilisé.

Une clé gardée dans votre propre coffre​

Une clé de signature peut rester dans un Azure Key Vault ou un HSM managé qui vous appartient. La plateforme ne la détient jamais : pour chaque signature, elle envoie une empreinte à votre coffre, qui renvoie la signature. Vous pouvez retirer cet accès à tout moment.

  1. Dans Paramètres, Clés de signature, copiez l'ID d'application (client) de la plateforme.
  2. Dans votre annuaire Microsoft Entra, consentez à cette application, puis attribuez-lui le rôle Key Vault Crypto User sur la clé (ou une stratégie autorisant sign et get).
  3. Sur la clé, dans votre coffre, définissez l'étiquette docpayload-tenant avec l'ID de votre espace de travail, affiché dans Paramètres, Clés de signature. L'application est la même pour tous les clients de la plateforme : l'étiquette indique donc quel espace de travail signe avec votre clé. Une clé sans étiquette, ou liée à un autre espace de travail, n'est pas enregistrée.
  4. Enregistrez la clé : un nom, l'identificateur de la clé avec sa version (https://{vault}.vault.azure.net/keys/{name}/{version}), l'ID de votre annuaire (locataire) et la chaîne de certificats en PEM, le certificat du signataire d'abord.

L'enregistrement lit l'étiquette de la clé, puis demande à votre coffre de signer une empreinte d'essai et vérifie la signature avec le certificat : une clé n'est donc enregistrée que si elle est liée à votre espace de travail, si la plateforme peut l'utiliser et si le certificat est bien celui de cette clé. Un document nomme ensuite la clé là où il nommerait un fichier, sans mot de passe :

{
"document": {
"signature": {
"certificate": "contracts",
"appearance": { "signedBy": "Contracts" }
},
"content": [{ "p": "Signé dans notre propre coffre." }]
}
}

Un nom se compose de lettres minuscules, de chiffres et de traits d'union : il n'est donc jamais confondu avec le chemin d'un fichier. Une clé RSA signe sur l'empreinte demandée par le document ; une clé P-256, P-384 ou P-521 signe respectivement sur SHA-256, SHA-384 ou SHA-512. Si le coffre ne signe pas au moment de générer un document, s'il signe avec une autre clé que celle du certificat, ou si le certificat a expiré, le document est refusé (SIGNATURE_NOT_APPLIED).

Types de signature​

TypeDescription
PAdESSignature électronique avancée en PDF — intégrée dans le PDF selon ETSI EN 319 142. Recommandé pour la plupart des cas d'usage.
DetachedSignature CMS/CAdES détachée — la signature est un objet CMS séparé. Utilisée quand l'interopérabilité avec les systèmes non-PDF est nécessaire.

Position​

L'objet position place le bloc de signature visible à un emplacement fixe.

PropriétéTypeDéfautDescription
pageNumbernumber1Numéro de page basé sur 1
leftnumber100Distance du bord gauche en points
bottomnumber150Distance du bord inférieur en points
widthnumber160Largeur du bloc de signature en points
heightnumber50Hauteur du bloc de signature en points

Apparence​

L'objet appearance contrôle ce qui s'affiche dans le bloc de signature visible.

PropriétéTypeDescription
signedBystringNom du signataire affiché dans le bloc
signDatestringChaîne de date affichée dans le bloc
reasonstringRaison de la signature (par ex., « Approuvé », « Examiné »)
locationstringLocalisation du signataire (par ex., « Portland, OR »)
imageobjectImage optionnelle (par ex., signature scannée) avec src, width, height
stylestringStyle nommé du bloc de signature (voir ci-dessous)
iconstringIcône dans le coin supérieur droit du bloc : lock ou shield. Aucune par défaut
certificateFingerprintbooleantrue ajoute une ligne avec le début de l'empreinte SHA-256 du certificat de signature
svgobjectUn svg dessiné à droite du bloc : un sceau placé avec use, ou tout autre dessin (voir ci-dessous)

Styliser le bloc​

Sans style, le bloc est dessiné dans un cadre fin et sombre, en texte de 6pt, le nom du signataire en gras. Nommez un style de styles pour le changer ; le PDF et le DOCX dessinent le même bloc.

Clé de styleCe qu'elle règle
fontSizeTaille des lignes
colorCouleur des lignes
fontWeightbold met toutes les lignes en gras (le nom du signataire l'est toujours)
borderLe cadre : son épaisseur et sa couleur, identiques sur les quatre côtés. Un style sans bordure ne dessine pas de cadre
backgroundColorFond derrière les lignes ; une icône est dessinée dans cette couleur
paddingEspace entre le cadre et ce que le bloc contient : une longueur pour tous les côtés, ou un côté à la fois avec paddingTop, paddingRight, paddingBottom et paddingLeft
{
"styles": {
"seal": { "fontSize": 9, "color": "#1D4ED8", "border": "1.5pt solid #1D4ED8", "backgroundColor": "#EFF6FF", "padding": 6 }
},
"signature": {
"certificate": "certs/signer.p12",
"password": "certPassword",
"appearance": { "signedBy": "Lisa Thompson", "style": "seal", "icon": "lock", "certificateFingerprint": true }
}
}

Une ligne plus large que le bloc est coupée et signalée ; élargissez position.width ou réduisez fontSize.

Un sceau ou tout autre dessin​

svg prend le même nœud svg que le contenu d'une page et le dessine dans le bloc, à droite, aussi haut que le bloc le permet ; les lignes gardent la place à sa gauche. Placez un composant de sceau avec use, avec ses propres paramètres :

{
"signature": {
"certificate": "certs/signer.p12",
"password": "certPassword",
"position": { "pageNumber": 1, "left": 58, "bottom": 110, "width": 330, "height": 120 },
"appearance": {
"signedBy": "Verdania Certification B.V.",
"reason": "Sealed as issued",
"svg": {
"viewBox": [132, 132],
"children": [
{ "use": { "name": "digital-eseal", "x": 0, "y": 0, "width": 132, "height": 132,
"params": { "title": "VERDANIA REGISTRY", "caption": "ELECTRONICALLY SEALED", "docid": "VC-27001-2026-04417" } } }
]
}
}
}
}

Une apparence avec un svg et sans lignes dessine le svg seul. Dans le PDF, le dessin fait partie du champ de signature lui-même ; dans le DOCX, il est dessiné au même endroit sur la page. Comme l'icône, c'est un dessin, qui ne dit rien de la validité de la signature. Un link sur l'une de ses formes n'est pas créé, et le rapport le signale : le bloc est un seul dessin, celui de la signature, et aucune de ses parties n'est un lien.

Icône et empreinte​

icon dessine un cadenas (lock) ou un bouclier (shield) sur un petit onglet dans le coin supérieur droit du bloc, de la couleur du cadre. C'est une décoration : elle est identique que la signature soit valide ou non, et seul le panneau de signatures du lecteur l'indique.

certificateFingerprint ajoute une dernière ligne, Certificate SHA-256: suivie des huit premiers octets de l'empreinte du certificat de signature. Un lecteur peut la comparer à l'empreinte publiée par le titulaire du certificat. Comme toute ligne du bloc, c'est du texte dessiné, pas une preuve : c'est le panneau de signatures qui vérifie le document.

Niveaux de certification​

NiveauDescription
noChangesPar défaut : aucune modification autorisée après la signature
formFillingSeul le remplissage des champs de formulaire est autorisé
annotatingLe remplissage des formulaires et les annotations sont autorisés
unspecifiedAucune certification : une signature d'approbation

Verrouillage des champs​

L'objet fieldLock restreint les modifications des champs de formulaire après la signature.

PropriétéTypeDescription
permissionsstringCe qui peut encore changer une fois les champs verrouillés signés : noChanges, formFilling (le défaut) ou annotating, les mots de certificationLevel
actionstringall (le défaut) verrouille tous les champs ; include verrouille ceux de fields, exclude tous les champs sauf ceux-là
fieldsstring[]Les noms des champs que include verrouille ou qu'exclude laisse libres ; obligatoire pour les deux, refusé à côté de all

Dans un DOCX​

Un DOCX est signé à partir du même objet signature, avec la même clé et le même condensé : tout le fichier est signé par une signature de paquet Office Open XML (XML Signature avec XAdES), et timestampServer y ajoute un horodatage. Une signature visible est dessinée dans le même cadre, avec le même signataire, motif, lieu et date.

Une signature de paquet est rompue par toute modification du fichier, donc certaines clés n'ont pas d'équivalent. Chacune, si elle est définie, est signalée, et non appliquée :

CléPourquoi
certificationLevel autre que noChanges, fieldLockune signature de paquet n'admet aucune modification ultérieure
signingType: "Detached"le paquet est toujours signé sur place
contactInfo, signatureCreator, claimedSignDateune signature de paquet n'a pas d'entrée pour eux
appearance.imagela signature visible est dessinée en texte

fieldName nomme le champ de signature du PDF ; une signature de paquet n'en a pas.

Exemples​

Signature visible basique​

{
"document": {
"signature": {
"fieldName": "approval_sig",
"certificate": "certs/signer.p12",
"password": "certPassword",
"signingType": "PAdES",
"signatureCreator": "DocPayload",
"contactInfo": "legal@company.com",
"visible": true,
"position": {
"pageNumber": 1,
"left": 350,
"bottom": 50,
"width": 200,
"height": 60
},
"appearance": {
"signedBy": "Lisa Thompson",
"reason": "Approved",
"location": "Portland, OR"
}
},
"content": [
{ "p": "This document has been reviewed and approved." }
]
}
}

Signature invisible​

{
"document": {
"signature": {
"fieldName": "integrity_sig",
"certificate": "certs/system.p12",
"password": "systemPass",
"signingType": "PAdES",
"signatureCreator": "DocPayload",
"visible": false,
"certificationLevel": "noChanges"
},
"content": [
{ "p": "This document is digitally signed for integrity verification." }
]
}
}

Signature avec serveur d'horodatage​

{
"document": {
"signature": {
"fieldName": "timestamped_sig",
"certificate": "certs/signer.p12",
"password": "certPassword",
"signingType": "PAdES",
"signatureCreator": "DocPayload",
"timestampServer": "http://timestamp.digicert.com",
"visible": true,
"position": {
"pageNumber": 1,
"left": 50,
"bottom": 50,
"width": 200,
"height": 60
},
"appearance": {
"signedBy": "Automated System",
"reason": "Generated and signed",
"location": "Cloud"
}
},
"content": [
{ "p": "Signed with a trusted timestamp for long-term validation." }
]
}
}

Signature avec verrouillage de champs​

{
"document": {
"signature": {
"fieldName": "final_approval",
"certificate": "certs/approver.p12",
"password": "approverPass",
"signingType": "PAdES",
"signatureCreator": "DocPayload",
"certificationLevel": "formFilling",
"fieldLock": {
"permissions": "formFilling",
"action": "all"
},
"visible": true,
"position": {
"pageNumber": 1,
"left": 350,
"bottom": 50,
"width": 200,
"height": 60
},
"appearance": {
"signedBy": "Final Approver",
"reason": "Final approval — all fields locked",
"location": "Head Office"
}
},
"content": [
{ "p": "After signing, no form fields can be modified." }
]
}
}