Signering med roller og tilgangspakker
Slik setter du opp signering basert på rolle eller tilgangspakke.
Hva er rolle- og tilgangspakkebasert signering?
Med rolle- og tilgangspakkebasert signering kan personer signere fordi de har en bestemt rolle eller tilgangspakke. Du definerer hvilke roller eller tilgangspakker som skal ha rett til å lese og signere i tjenestens policy. Dette kan for eksempel være daglig leder, regnskapsfører eller revisor.
Avhengigheter
Maskinporten
Du trenger Maskinporten hvis du vil bruke meldingstjenesten og/eller begrense tilgangen på signaturobjektene.
Hvis du trenger hjelp med å sette opp Maskinporten i appen din, finner du det du trenger i denne veiledningen.
Meldingstjenesten i Altinn
Hvis appen din er konfigurert til å sende signaturkvitteringer, må meldingstjenesten i Altinn (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
Legg til et prosessteg i App/config/process/process.bpmn, som i eksemplet nedenfor.
Signering består av to brukerhandlinger (user actions). Hvis appen bruker Altinn-brukergrensesnittet, blir disse kalt automatisk når du er i signeringssteget. Bruker du bare API-et, må du kalle dem manuelt via /actions-endepunktet eller process next.
sign: Selve signeringshandlingen.reject: Hvis det skal være mulig å avbryte signeringssteget, må du også legge til en gateway som styrer hvor prosessen skal gå videre.
App/config/process/process.bpmn<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. -->
<!-- Hvis du ikke slår på denne, bør du 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, les om hvordan du konfigurerer miljøspesifikke meldingsressurser.
Legg til datatype for å lagre signeringsdata
Legg til denne datatypen i dataTypes i App/config/applicationmetadata.json.
Signeringssteget bruker den til å lagre de faktiske signaturene som blir generert når brukeren utfører signeringshandlingen.
App/config/applicationmetadata.json{
"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", slik at bare appen selv kan redigere disse dataene – ikke via appens API. 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.
Sett opp tilgangsstyring
Gi read, write og eventuelt sign til den som fyller ut skjemaet. Andre som skal signere må også få read og write.
Les om action-attributter i tilgangsstyring.
2. Legg til sider for signeringssteget
Legg til en ny mappe under
App/uifor signeringsoppgaven. Mappen må ha samme navn som ID-en til oppgaven iprocess.bpmn, for eksempelTask_2.Opprett en
layouts-mappe og enSettings.json-fil i oppgavemappen. SettdefaultDataTypetil datamodellen som signeringsoppgaven skal bruke:App/ui/Task_2/Settings.json{ "$schema": "https://altinncdn.no/toolkits/altinn-app-frontend/4/schemas/json/layout/layoutSettings.schema.v1.json", "defaultDataType": "model", "pages": { "order": ["signing"] } }Legg til en fil kalt
signing.jsonilayouts-mappen.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å, for eksempel vedlegg, xml-data eller PDF-oppsummering fra tidligere steg.
- SigneeList: Lister ut de som skal signere (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.
- SigningActions: Utleder status for signeringssteget og viser relevante knapper til sluttbruker, for eksempel Signer-knappen.
Hvis du ikke bruker
SigningActionsfor å vise Signer-knappen, må du legge til en egen handlingsknapp med action “sign”, for å la sluttbruker signere.Eksempler på hvordan du kan bruke komponentene:
App/ui/Task_2/layouts/signing.json{ "$schema": "https://altinncdn.no/toolkits/altinn-app-frontend/4/schemas/json/layout/layout.schema.v1.json", "data": { "layout": [ { "id": "headerSigningFounders", "type": "Heading", "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 tekstressursnøkkelen
signee_list.no_signeesi tekstressursfilene.App/config/texts/resource.{language}.json{ "id": "signee_list.no_signees", "value": "Ingen signaturer enda" }