1. Bygg en vanlig OpenID4VP-forespørsel
Bruk walletinngangen:
https://www.symfoni.dev/app/credential/verify?request_uri=<url-enkodet-request_uri> For signeringsflyt skal requesten minst oppfylle disse kravene:
client_idmå værex509_hash:<base64url-sha256-av-RP-access-certificate>noncemå være fersk og unik per forespørselcredential_idsitransaction_datamå referere til DCQL query ids- i BR-flyten er virksomhetsbeviset et
EBWOID, men brukerflaten omtaler det somVirksomhetsbevis
2. Beskriv dokumentet i transaction_data
På wire sendes transaction_data som en array med base64url-enkodede JSON-strenger. Det dekodede innholdet ser prinsipielt slik ut:
{
"type": "qes_authorization",
"credential_ids": ["business-identity"],
"transaction_data_hashes_alg": ["sha-256"],
"documentDigests": [
{
"id": "contract-2026-001",
"label": "Kontrakt.pdf",
"hash": "<base64-sha256-av-pdf>",
"hashAlgorithmOID": "2.16.840.1.101.3.4.2.1",
"documentLocation_uri": "https://verifier.example.com/documents/contract-2026-001.pdf"
}
]
} Symfoni forventer per nå:
- nøyaktig ett
documentDigests-element per entry - kun PDF
- kun SHA-256
- enten
documentLocation_uriellercontentBase64, ikke begge business-identityskal kunne oppfylles av BR sittEBWOID, der virksomhets-ID ligger i toppnivafeltetidog virksomhetsnavn iname
3. Hent signaturene etter fullført flyt
Bruk samme nonce og kall:
curl -sS
--cert verifier-rpac.pem
--key verifier-rpac.key
"https://www.symfoni.dev/api/signatures/<nonce>" Forventet utfall:
200hvisnonceog verifier-binding matcher401hvis verifisert klientsertifikat mangler eller er ugyldig403hvis requesten ikke kommer via betrodd intern ingress404hvisnonceer ukjent eller tilhører en annen verifier410hvis signaturen finnes, men er utløpt
En robust integrasjon
En robust verifier binder samme RP access certificate til request object, client_id og mTLS-uthenting. Den behandler 404 som mulig binding-mismatch, ikke bare som manglende data, og logger requestId fra feilresponsene.
