Rolle- og tilgangspakkebasert signering
Følg disse stegene for å implementere rolle- og tilgangspakkebasert signering i din tjeneste.
Hva betyr rolle- og tilgangspakkebasert signering?
Med rolle- og tilgangspakkebasert signering mener vi en tjeneste hvor de som skal signere har rettigheter til å lese og signere fordi de tilfredstiller rolle- eller tilgangspakkekrav i henhold til policy for tjenesten. Dette kan for eksempel være daglig leder, regnskapsfører eller revisor.
Avhengigheter
Maskinporten
Maskinporten er kreves hvis du ønsker å bruke meldingstjenesten og/eller legge tilgangsbegrensninger på signaturobjektene.
Hvis du trenger hjelp med oppsett av Maskinporten i din app, finner du all informasjonen du trenger i denne guiden.
Meldingstjenesten
Hvis appen din er konfigurert til å sende signaturkvitteringer, må Altinns meldingstjeneste (Correspondence) være aktivert.
Slik kommer du i gang med meldingstjenesten.
1. Legg til en signeringsoppgave i appens prosess, med tilhørende konfigurasjon
Utvid app-prosessen med et signeringssteg
Det må legges til et prosessteg i App/config/process/process.bpmn, som i eksemplet nedenfor.
Signering består av to brukerhandlinger (user actions). Dersom Altinn-brukergrensesnittet brukes av appen, så vil disse bli kalt automatisk når man står i signeringssteget. Om kun API-et benyttes, så må disse kalles manuelt via /actions-endepunktet eller process next.
sign: Selve signeringshandlingen.reject: Dersom det skal være mulig å avbryte signeringssteget, så må det også legges til en gateway for å styre hvor prosessen skal gå videre da.
<bpmn:task id="SigningTask" name="Signering">
<bpmn:extensionElements>
<altinn:taskExtension>
<altinn:taskType>signing</altinn:taskType>
<altinn:actions>
<altinn:action>sign</altinn:action>
<altinn:action>reject</altinn:action>
</altinn:actions>
<altinn:signatureConfig>
<altinn:dataTypesToSign>
<altinn:dataType>ref-data-as-pdf</altinn:dataType>
</altinn:dataTypesToSign>
<altinn:signatureDataType>signatures</altinn:signatureDataType>
<!-- Vi har laget en standard validator som kan slås på her. -->
<!-- Den validerer at påkrevd antall signaturer (minCount på signatur-datatypen) er oppfylt. -->
<!-- Om denne ikke slås på, bør man skrive egen validering av signaturer. -->
<altinn:runDefaultValidator>true</altinn:runDefaultValidator>
<!-- Valgfritt: Hvis du ønsker å sende kvitteringer for utført signatur, -->
<!-- kan du spesifisere din correspondence-ressurs i feltet under. -->
<altinn:correspondenceResource>app-correspondence-resource</altinn:correspondenceResource>
</altinn:signatureConfig>
</altinn:taskExtension>
</bpmn:extensionElements>
<bpmn:incoming>SequenceFlow_1oot28q</bpmn:incoming>
<bpmn:outgoing>SequenceFlow_1if1sh9</bpmn:outgoing>
</bpmn:task>
Hvis du har valgt å sende signeringskvitteringer ved å spesifisere en correspondence-ressurs, finner du flere detaljer om denne konfigurasjonen her
Legg til datatyper for å lagre signeringsdata
Denne datatypen legges til i dataTypes i App/config/applicationmetadata.json.
Den benyttes av signeringssteget til å lagre de faktiske signaturene som genereres når brukeren utfører signeringshandlingen.
{
"id": "signatures",
"allowedContentTypes": [
"application/json"
],
"allowedContributors": [
"app:owned"
],
"minCount": 1,
"actionRequiredToRead": "signature-access",
"actionRequiredToWrite": "signature-access"
}
Verdien av id-feltet må samstemme med verdien som har blitt spesifisert i signeringssteget.
Det er viktig å sette allowedContributors til "app:owned". Det gjør at disse dataene ikke kan redigeres via appens API, men kun av appen selv. Før versjon 8.6 var denne konfigurasjonen feilstavet allowedContributers.
Vi anbefaler å sette opp databeskyttelse for signaturobjektene, ved å spesifisere feltene for actionRequiredToRead og actionRequiredToWrite i definisjonen ovenfor. Hvis du ikke ønsker å sette opp dette, kan du fjerne disse feltene.
Tilgangsstyring
Gi read, write og eventuelt sign til den som fyller ut skjemaet. Andre som skal signere må også få read og write.
Mer informasjon om action attributter finner du her.
Dette steget må gjøres manuelt. Støtte for konfigurasjon i Altinn Studio kommer senere. Se “Manuelt oppsett”-fanen for denne seksjonen for veiledning.
2. Legg til layout-set for signering
Legg til en ny mappe under App/ui for signeringsoppgaven din. Kall den f.eks. signing.
Oppdater filen App/ui/layout-sets.json med ny sidegruppe, som har samme id som mappen du nettopp opprettet.
Din oppdaterte layout-sets.json kan se slik ut:
{
"$schema": "https://altinncdn.no/toolkits/altinn-app-frontend/4/schemas/json/layout/layout-sets.schema.v1.json",
"sets": [
{
"id": "form",
"dataType": "model",
"tasks": [
"Task_1"
]
},
{
"id": "signing",
"dataType": "model",
"tasks": [
"Task_2"
]
}
]
}
I mappen du opprettet, legg til en ny fil kalt signing.json.
Det finnes et sett med ferdige komponenter for å bygge opp layout for et signeringssteg. Vi anbefaler å bruke disse, men de er ikke obligatoriske.
- SigningDocumentList:
- Lister ut dataene som blir signert på. Feks. vedlegg, xml-data eller PDF-oppsummering fra tidligere steg.
- SigneeList:
- Lister ut signatarer og tilhørende signeringsstatus.
- Per nå støtter ikke denne listen å vise roller som skal signere, kun personer som har fått brukerstyrt delegert tilgang. Men i det øyeblikket en person utfører en signering vil de dukke opp, så vi kan bruke den som en “Signaturer”-liste.
- SigningStatusPanel:
- Utleder status for signeringssteget og viser relevante knapper til sluttbruker, feks. “Signer”-knappen.
Dersom du ikke benytter SigningStatusPanel for å vise “Signer”-knappen, så må du legge til en egen action button med action “sign”, for å la sluttbruker signere.
Eksempel på bruk av komponentene:
{
"$schema": "https://altinncdn.no/toolkits/altinn-app-frontend/4/schemas/json/layout/layout.schema.v1.json",
"data": {
"layout": [
{
"id": "headerSigningFounders",
"type": "Header",
"size": "L",
"textResourceBindings": {
"title": "Her kan man ha en overskrift"
}
},
{
"id": "signing-documents",
"type": "SigningDocumentList",
"textResourceBindings": {
"title": "Dokumenter som skal signeres",
"description": "Dokumenter som skal signeres beskrivelse"
}
},
{
"id": "signee-list",
"type": "SigneeList",
"textResourceBindings": {
"title": "Signaturer"
}
},
{
"id": "signing-actions",
"type": "SigningActions"
}
]
}
}
Du kan overstyre teksten som vises når listen er tom, før noen har signert, ved å legge til en tekst for text resource nøkkel signee_list.no_signees i text resource filene deres.
{
"id": "signee_list.no_signees",
"value": "Ingen signaturer enda"
}
Dette steget må gjøres manuelt. Støtte for konfigurasjon i Altinn Studio kommer senere. Se “Manuelt oppsett”-fanen for denne seksjonen for veiledning.