Skip to content

Commit

Permalink
Fix PR comments
Browse files Browse the repository at this point in the history
  • Loading branch information
standeren committed Nov 22, 2023
1 parent 2151b02 commit 67269b1
Show file tree
Hide file tree
Showing 8 changed files with 644 additions and 84 deletions.
95 changes: 89 additions & 6 deletions content/app/guides/multi-app-solution/_index.nb.md
Original file line number Diff line number Diff line change
@@ -1,16 +1,99 @@
---
title: Generell fremgangsmåte for å utvikle en multi-app løsning i Altinn
linktitle: Multi-app løsning
description: Vurderinger som burde gjøres og forklaringer på hvordan å gå frem når man utvikler en multi-app løsning
title: Generell fremgangsmåte for å utvikle en flerappsløsning i Altinn
linktitle: Flerappsløsning
description: Vurderinger som burde gjøres og forklaringer på hvordan å gå frem når man utvikler en flerappsløsning
weight: 250
aliases:

- /app/multi-app-solution/

---

Før du leser videre i denne guiden, vær så snill å gjør en vurdering om en multi-app løsning er det du trenger for å realisere skjemaet ditt.
## Hva er en flerappsløsning?

En flerappsløsning er en løsning som består av to eller flere
samarbeidende applikasjoner, der applikasjon A typisk vil utløse
opprettelsen av en ny
instans av applikasjon B. Som en del av
opprettelsen av applikasjon B er det mulig å
forhåndsfylle instansen med spesifikke data fra den pågående
forekomsten av applikasjon A.

Denne guiden tar deg gjennom en flerappsløsning som består av to
apper; _applikasjon A_ og _applikasjon B_,
men konseptet kan utvides til å inneholde flere applikasjoner av
type A eller type B, eller begge typer.

![Eksempelarkitektur for en flerapp-løsning](multi-app-architecture.drawio.svg)

### Terminologi

- **En instans:** Når vi snakker om instanser i en
applikasjonskontekst, refererer dette til unik data som beskriver
detaljer om den spesifikke økten som pågår i applikasjonen.
Dataene inkluderer informasjon om hvem som fyller ut
dataene og hva dataene inneholder.
- **Applikasjon A:** Dette vil være en applikasjon som fungerer som en vanlig
Altinn-applikasjon, noe som betyr at
sluttbrukere vil samhandle med den. Mens de fyller ut skjemaet, vil de
jobbe på sin egen private instans. Imidlertid
vil den skille seg fra andre Altinn-apper siden tjeneste-eieren
har tilpasset den for å inkludere handlinger som
vil opprette en ny instans av _applikasjon B_.
- **Applikasjon B:** Dette vil være en applikasjon som kan ha flere
formål, men hovedformålet vil være
å motta og håndtere data fra _applikasjon A_.
Denne applikasjonen vil skille seg fra
andre Altinn-apper siden instanser opprettes av
utløsere i en annen applikasjon.

## Trenger jeg en flerappsløsning?

Altinn tilbyr et robust sett med API-er og eventstøtte for behandling av data fra Altinn-apper. Hvis disse
alternativene ikke
samsvarer med dine behov, kan du vurdere en flerappsløsning.

### Brukstilfeller der du kan vurdere å bruke en flerappsløsning:

Vi har skissert noen vanlige brukstilfeller hvor en flerappsløsning kan være hensiktsmessig.

- Organisasjonen har begrenset utviklingskapasitet eller ønsker ikke
å utvikle og vedlikeholde et nytt system for behandling av data fra
Altinn.
- Eksisterende oppsett i organisasjonen for behandling av data fra
Altinn oppfyller ikke kravene til sikkerhet.

Ved å implementere en flerappsløsning kan en organisasjon bruke Altinn-innboksen for å motta data. I
de fleste tilfeller vil personene som trenger å behandle dataene allerede ha tilgang til organisasjonen i Altinn eller
kan
tildeles denne tilgangen. Den siste applikasjonen i dataflyten (applikasjon B i vårt tilfelle) kan angi
autorisasjonsregler
som krever en spesifikk rolle før tilgang til dataene gis, og dermed støtte begrenset tilgang til sensitive data til
personer med et offisielt behov.

## Hvordan fungerer egentlig flerappsløsning?

En flerappsløsning er en måte å konfigurere flere skjemaer for å kommunisere gjennom API-kall. Den spesifikke
kommunikasjonen
vi vil beskrive i denne veilederen er opprettelsen av en ny instans av en applikasjon (B) utløst av en annen
applikasjon
(A). Et typisk scenario ville være at en sluttbruker fyller ut eller laster opp informasjon i en instans av
applikasjon A. Når sluttbruker trykker
på knappen for å sende inn skjemaet, sendes et API-kall til en annen applikasjon (B), og det opprettes en ny instans
av denne applikasjonen hvor
svarene fra applikasjon A er en del av informasjonen.

### En integrasjon mellom appen og Maskinporten kan være nødvendig

## Trenger jeg en multi-app løsning?
...
For at en applikasjon skal utføre handlinger på en annen applikasjon, for eksempel opprette en ny instans på vegne av
en sluttbruker eller organisasjon, må den være autorisert.
Av natur vil forespørselen om å opprette instansen av applikasjon B inkludere legitimasjonen til sluttbrukeren
som fyller ut applikasjon A.
I de fleste tilfeller vil ikke denne sluttbrukeren være autorisert til å instansiere nye instanser på vegne av
organisasjonen som eier applikasjon B, og dette vil derfor feile.
En måte å sikre at applikasjonen er autorisert til å utføre instansieringshandlingen på, er å bruke
applikasjoneierens legitimasjon i stedet for sluttbrukerens legitimasjon.
Dette oppnås ved å bruke en Maskinporten-integrasjon for å generere en token som representerer organisasjonen
og legge dette tokenet til i forespørslene som applikasjon A gjør mot applikasjon B.

{{<children description="true" />}}
35 changes: 31 additions & 4 deletions content/app/guides/multi-app-solution/instructions/_index.nb.md
Original file line number Diff line number Diff line change
@@ -1,12 +1,39 @@
---
title: Instructions for making a multi-app solution in Altinn
linktitle: Multi-app solution instructions
description: Explanations of how to go about when creating a general multi-app solution
title: Instruksjoner for å utvikle en flerappsløsning i Altinn
linktitle: Instruksjoner
description: Forklaringer om hvordan du går frem for å lage en generell flerappsløsning
weight: 20
aliases:

- /app/multi-app-solution/instructions/app-b

---

{{<children description="true" />}}
## Forutsetninger

Før du starter på den tekniske implementeringen, må du sørge for at de nødvendige forutsetningene er oppfylt.

### Funksjonelle forutsetninger

1. App-utvikleren må ha tilgang til å opprette, utvikle og distribuere applikasjoner eid av en organisasjon.
2. Et eksisterende Altinn-skjema (applikasjon A) der dataene som er ment å videresendes til applikasjon
B, er identifisert.
3. Det skal være klart hvem instanse-eierne er, det vil si hvilke roller og tilganger de har.

### Tekniske forutsetninger

1. Applikasjonene dine bruker versjon 8 eller nyere av Altinn-nugets.
2. Organisasjonen har allerede en eksisterende Maskinporten-klient med riktige altinn-spesifikke
scopes; `altinn:serviceowner/instances.read` og
`altinn:serviceowner/instances.write`*
3. En integrasjon mellom applikasjon(en) og klientene i Maskinporten. Dette må gjøres i applikasjonen(e)
som skal sende forespørsler til en annen applikasjon, hvor forespørslene må autoriseres av applikasjonenseier.*

Hvis trinn 2 og 3 av de tekniske kravene mangler, se
seksjonen [Maskinporten-App Integrering](../../maskinporten-app-integration)

\* _Hvis sluttbrukeren av applikasjon A har de nødvendige rollene for å instansiere applikasjon B på vegne av den
tiltenkte
mottakeren, kan du hoppe over disse tekniske kravene._

{{<children description="true"/>}}
Loading

0 comments on commit 67269b1

Please sign in to comment.