Sist endret: 2. okt. 2025

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 tilgangs­begrensninger 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 meldings­tjeneste (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.

    Det anbefales å dra inn prosessteget via prosessdesigneren i Altinn Studio. Da får man generert BPMN-diagram som viser flyten i appen. Merk at prosessdesigneren forløpig ikke håndterer alle aspekter av konfigurasjonen, så det må suppleres med noe manuelt oppsett.

    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 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.