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.