Sist endret: 29. okt. 2026
Preview: Dette er dokumentasjonen for Altinn Studio v9, som er en forhåndsversjon. Gjeldende versjon er v8. For å se dokumentasjonen for gjeldende versjon, velg v8 i versjonsvelgeren i menyen til venstre.

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.

Vi anbefaler å dra inn prosessteget via prosessdesigneren i Altinn Studio. Da blir det generert et BPMN-diagram som viser flyten i appen. Merk at prosessdesigneren bare konfigurerer deler av steget, så du må legge til noe manuelt etterpå.

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

  1. Legg til en ny mappe under App/ui for signeringsoppgaven. Mappen må ha samme navn som ID-en til oppgaven i process.bpmn, for eksempel Task_2.

  2. Opprett en layouts-mappe og en Settings.json-fil i oppgavemappen. Sett defaultDataType til 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"]
      }
    }
    
  3. Legg til en fil kalt signing.json i layouts-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 SigningActions for å 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"
          }
        ]
      }
    }
    
  4. 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_signees i tekstressursfilene.

    App/config/texts/resource.{language}.json
    {
      "id": "signee_list.no_signees",
      "value": "Ingen signaturer enda"
    }