diff --git a/krav/07 Brukeradministrasjon og tilgangsstyring/applikasjoner/02 Iterasjon 3 - Grunnleggende tilgangsstyring for intern support/opprette_applikasjon.design.md b/krav/07 Brukeradministrasjon og tilgangsstyring/applikasjoner/02 Iterasjon 3 - Grunnleggende tilgangsstyring for intern support/opprette_applikasjon.design.md index 5036b8d..80ec7fb 100644 --- a/krav/07 Brukeradministrasjon og tilgangsstyring/applikasjoner/02 Iterasjon 3 - Grunnleggende tilgangsstyring for intern support/opprette_applikasjon.design.md +++ b/krav/07 Brukeradministrasjon og tilgangsstyring/applikasjoner/02 Iterasjon 3 - Grunnleggende tilgangsstyring for intern support/opprette_applikasjon.design.md @@ -11,9 +11,13 @@ Opprettelse skjer i en **dialogboks (modal)** som åpnes fra listevisningen for Dialogboks med: - **Tittel:** "Opprett ny applikasjon" -- **Felter** (alle obligatoriske): - - Identitetsleverandør — valg mellom *Feide* og *Maskinporten* (FS skal ikke være valgbar) - - Ekstern ID — ID hos valgt identitetsleverandør (verifiseres ved innsending) +- **Felter** (obligatoriske, men avhengig av valgt identitetsleverandør): + - Identitetsleverandør — valg mellom *Feide* og *Maskinporten*. *FS* er et tredje valg, og + vises bare for administratorer med applikasjonsadministrator-rollen for Sikt + - Ekstern ID — ID hos valgt identitetsleverandør (verifiseres ved innsending); gjelder Feide + og Maskinporten + - Navn — fylles ut i dialogen når identitetsleverandøren er FS; for Feide og Maskinporten + hentes navnet i stedet fra idP-en og er ikke et felt i dialogen - Organisasjon — valgliste; antall valg avhenger av rollen: - Tilgang til kun én organisasjon: forhåndsvalgt og låst - Tilgang til flere organisasjoner: valgliste begrenset til disse @@ -23,7 +27,7 @@ Dialogboks med: ## Interaksjonsmønstre ### Primærhandling -*Opprett*-knappen sender skjemaet. Verifiserer ekstern ID mot identitetsleverandøren, sjekker unik visningsnavn og unik ID. Ved suksess lukkes dialogen og brukeren navigeres til detaljsiden for applikasjonen. +*Opprett*-knappen sender skjemaet. Verifiserer ekstern ID mot identitetsleverandøren, sjekker unik visningsnavn og unik ID. Er identitetsleverandøren FS, verifiseres i stedet at organisasjonen har en registrert FS-datakilde i alle miljøer, før noe opprettes. Ved suksess lukkes dialogen og brukeren navigeres til detaljsiden for applikasjonen. ### Sekundære handlinger - *Avbryt* lukker dialogen uten å opprette @@ -44,6 +48,7 @@ Dialogboks med: | Feil (ID ikke funnet) | Feilmelding ved ID-feltet: "ID-en kunne ikke verifiseres hos {identitetsleverandør}" | | Feil (ID i bruk) | Feilmelding ved ID-feltet: "ID-en er allerede registrert" | | Feil (visningsnavn i bruk) | Feilmelding på toppen av dialogen: "Visningsnavnet «{navn}» er allerede i bruk" — siden navnet hentes fra idP-en, kan brukeren ikke endre det her | +| Feil (mangler FS-datakilde) | Feilmelding på toppen av dialogen: "Organisasjonen mangler FS-datakilde i {miljø} — applikasjonen ble ikke opprettet". Dialogen holdes åpen med utfylte verdier | | Suksess | Dialog lukkes, navigasjon til detaljside, eventuelt toast/banner "Applikasjonen er opprettet" på detaljsiden | ## Per-scenario detaljer @@ -51,8 +56,12 @@ Dialogboks med: ### Scenario: Velge identitetsleverandør ved opprettelse Valget mellom Feide og Maskinporten presenteres tydelig (radioknapper eller segmentert kontroll). Etter opprettelse vises identitetsleverandøren som låst/skrivebeskyttet på detaljsiden. -### Scenario: FS er ikke en valgbar identitetsleverandør -FS skal ikke vises som alternativ i dialogen i det hele tatt. +### Scenario: FS som identitetsleverandør +FS vises som alternativ **bare** for en administrator med applikasjonsadministrator-rollen for Sikt. For alle andre skal alternativet ikke vises i det hele tatt — ikke som et deaktivert valg, jf. prosjektmønsteret for manglende rettighet. Velges FS, provisjonerer opprettelsen en maskinbruker i FS' webtjenester, og dialogen bør si det: det opprettes noe utenfor applikasjonsoversikten, og handlingen er derfor tyngre enn de to andre valgene. + +Dialogen viser ikke miljøvalg for FS: applikasjonen er miljøløs, og identiteten gjelder i alle miljøer med én gang. I stedet for ekstern ID-oppslag fylles navnet ut manuelt (se Navn-feltet over), og innsending verifiserer i stedet at organisasjonen har registrert FS-datakilde i alle miljøer — mangler den i ett, avvises hele opprettelsen med en feilmelding som navngir miljøet, og ingenting opprettes delvis. Passord settes ikke i dialogen: detaljsiden blir inngangen til å sette ett passord per miljø, med den samme passordflyten som for øvrige applikasjoner. + +Avgrensningen bør ikke lekke inn i detaljsiden: når applikasjonen først finnes, er den organisasjonens egen, og handlingene der (navn og beskrivelse, deaktivering og reaktivering, passordbytte) gates som for de øvrige applikasjonene. ### Scenario: Opprette applikasjon når administrator har tilgang til kun én organisasjon Organisasjonsfeltet er forhåndsvalgt med administratorens eneste organisasjon og kan ikke endres. @@ -86,7 +95,8 @@ Vurder en informasjonsboks på detaljsiden som forklarer at applikasjonen kan au ## Avklarte valg -- **IdP-velger:** Radioknapper med Feide og Maskinporten +- **IdP-velger:** Radioknapper med Feide og Maskinporten — og FS som et tredje valg for + administratorer med applikasjonsadministrator-rollen for Sikt (besluttet 24. august 2026) - **Organisasjonsvelger:** Vanlig nedtrekksliste (uten søk), også for super-applikasjonsadministrator - **Plassering av "Opprett applikasjon"-knapp:** I `ActionButtons`-slot i `ListPageLayout` (etablert prosjektmønster for handlinger i listevisninger) - **Suksess-feedback:** Toast/snackbar på detaljsiden etter navigasjon ("Applikasjonen er opprettet") diff --git a/krav/07 Brukeradministrasjon og tilgangsstyring/applikasjoner/02 Iterasjon 3 - Grunnleggende tilgangsstyring for intern support/opprette_applikasjon.feature b/krav/07 Brukeradministrasjon og tilgangsstyring/applikasjoner/02 Iterasjon 3 - Grunnleggende tilgangsstyring for intern support/opprette_applikasjon.feature index 99c5748..7ff56e9 100644 --- a/krav/07 Brukeradministrasjon og tilgangsstyring/applikasjoner/02 Iterasjon 3 - Grunnleggende tilgangsstyring for intern support/opprette_applikasjon.feature +++ b/krav/07 Brukeradministrasjon og tilgangsstyring/applikasjoner/02 Iterasjon 3 - Grunnleggende tilgangsstyring for intern support/opprette_applikasjon.feature @@ -13,27 +13,116 @@ Egenskap: Opprette applikasjon ved en systemgenerert unik ID. Visningsnavnet, som hentes fra idP-en, må være globalt unikt på tvers av alle organisasjoner. - FS som identitetsleverandør er utfaset for nye applikasjoner og kan - ikke velges ved opprettelse. Eksisterende FS-applikasjoner består - som data og forvaltes i den samme applikasjonsoversikten som Feide- - og Maskinporten-applikasjoner — alle administrasjonshandlinger - (listevisning, tilgangsstyring, passordbytte, beskrivelse, - deaktivering) gjelder også for dem. Det er kun opprettelse som er - stengt. + FS som identitetsleverandør — en maskinbruker-applikasjon — er + utfaset for nye integrasjoner, og lærestedene kan ikke opprette dem + selv. Opprettelse er likevel ikke stengt: applikasjonsadministratorer + hos Sikt kan opprette maskinbruker-applikasjoner så lenge FS' + webtjenester lever. Opprettelsen provisjonerer en maskinbruker i de + webtjenestene, med replikering av passordet, og det er en flate Sikt + drifter — den skal kunne forvaltes fra applikasjonsoversikten framfor + av databaseforvaltningen. + + Avgrensningen er viktig: det er bare opprettelsen som er gatet hos + Sikt. Den løpende forvaltningen av en maskinbruker-applikasjon som + finnes — navn og beskrivelse, deaktivering og reaktivering, + passordbytte — følger de ordinære reglene i BRU-APP-API-006, + BRU-APP-API-010 og BRU-APP-API-004, altså rettigheten hos + organisasjonen som eier applikasjonen. Eksisterende + maskinbruker-applikasjoner forvaltes i den samme + applikasjonsoversikten som Feide- og Maskinporten-applikasjoner, og + alle administrasjonshandlinger (listevisning, tilgangsstyring, + passordbytte, beskrivelse, deaktivering) gjelder også for dem. # Krav fra Confluence: K8 Opprette ny API-bruker, Discovery: Registrer applikasjon (4612784227), Rammeinnsikt: Grunnleggende selvbetjent administrasjon av API-brukere (4401102853) Regel: Opprettelse krever valg av identitetsleverandør Scenario: Velge identitetsleverandør ved opprettelse + Gitt jeg administrerer én eller flere organisasjoner som ikke er Sikt Når jeg starter opprettelse av en ny applikasjon Så kan jeg velge én av identitetsleverandørene Feide og Maskinporten Og identitetsleverandøren settes på applikasjonen og kan ikke endres senere - Scenario: FS er ikke en valgbar identitetsleverandør + Regel: Bare Sikt kan opprette en applikasjon med FS som identitetsleverandør + + # FS er utfaset som identitetsleverandør for nye integrasjoner, men opprettelse er + # ikke stengt. En maskinbruker-applikasjon provisjonerer en maskinbruker i FS' + # webtjenester, med replikering av passordet, og det er en flate Sikt drifter. Så + # lenge de webtjenestene lever skal flaten kunne forvaltes fra + # applikasjonsoversikten framfor av databaseforvaltningen. Selvbetjent opprettelse + # hos lærestedene er stengt — det er ikke lærestedets eget valg å ta i bruk en + # utfaset integrasjonsform. + + Scenario: Applikasjonsadministrator hos Sikt kan velge FS + Gitt jeg har applikasjonsadministrator-rollen for Sikt + Når jeg starter opprettelse av en ny applikasjon + Så kan jeg velge FS som identitetsleverandør + + Scenario: FS er ikke en valgbar identitetsleverandør for en lokal administrator + Gitt jeg har applikasjonsadministrator-rollen for en organisasjon som ikke er Sikt Når jeg starter opprettelse av en ny applikasjon Så er FS ikke tilgjengelig som identitetsleverandør + Scenario: Forsøk på å opprette en maskinbruker-applikasjon uten rettigheten avvises + Gitt jeg ikke har applikasjonsadministrator-rollen for Sikt + Når jeg forsøker å opprette en applikasjon med FS som identitetsleverandør + Så avvises opprettelsen + Og det fremgår at opprettelse av maskinbruker-applikasjoner krever applikasjonsadministrator hos Sikt + + Scenario: Opprettelsen provisjonerer en maskinbruker + Gitt jeg har applikasjonsadministrator-rollen for Sikt + Når jeg oppretter en applikasjon med FS som identitetsleverandør på en organisasjon + Så er applikasjonen opprettet på den organisasjonen + Og det er provisjonert en tilhørende maskinbruker i FS' webtjenester + + Regel: Opprettelsen av en maskinbruker-applikasjon er miljøløs og alt-eller-ingenting + + # Maskinbruker-applikasjonen selv har ingen miljødimensjon — det er provisjoneringen i + # FS' webtjenester som skjer per miljø. Mangler organisasjonen FS-datakilde i ett av + # miljøene, finnes det ingen delvis provisjonert tilstand: hele opprettelsen avvises. + # Passord er heller ikke satt av opprettelsen — det settes per miljø etterpå, med den + # samme passordflyten som for øvrige applikasjoner. + + Scenario: Opprettelsen gjelder i alle miljøer uten miljøvalg + Gitt jeg har applikasjonsadministrator-rollen for Sikt + Når jeg oppretter en applikasjon med FS som identitetsleverandør + Så velger jeg ikke miljø i dialogen + Og applikasjonen får den samme identiteten i alle miljøer + + Scenario: Opprettelsen avvises i sin helhet når organisasjonen mangler FS-datakilde i et miljø + Gitt jeg har applikasjonsadministrator-rollen for Sikt + Og organisasjonen mangler registrert FS-datakilde i minst ett miljø + Når jeg forsøker å opprette en applikasjon med FS som identitetsleverandør for organisasjonen + Så avvises opprettelsen i sin helhet + Og det fremgår hvilket miljø organisasjonen mangler FS-datakilde i + Og applikasjonen er ikke opprettet i noe miljø + + Scenario: Passord settes per miljø etter opprettelsen + Gitt jeg har opprettet en applikasjon med FS som identitetsleverandør + Og applikasjonen har ennå ikke noe passord + Når applikasjonen skal autentisere seg i et miljø + Så må det først settes et passord for applikasjonen i det miljøet + Og passordet settes med den samme passordflyten som for øvrige applikasjoner + + Regel: Bare opprettelsen av en maskinbruker-applikasjon er gatet hos Sikt + + # Gatingen gjelder handlingen «ta i bruk en utfaset integrasjonsform», ikke + # applikasjonen som sådan. Når den først finnes, er den organisasjonens applikasjon + # på linje med de øvrige. + + Scenario: Løpende forvaltning følger organisasjonen som eier applikasjonen + Gitt det finnes en maskinbruker-applikasjon på en organisasjon + Og jeg har rettighet til å administrere applikasjoner i den organisasjonen + Så kan jeg endre navn og beskrivelse, deaktivere og reaktivere applikasjonen og bytte passord + Og ingen av de handlingene krever applikasjonsadministrator hos Sikt + + Scenario: Manglende Sikt-rettighet skjuler ikke den løpende forvaltningen + Gitt det finnes en maskinbruker-applikasjon på en organisasjon jeg administrerer + Og jeg har ikke applikasjonsadministrator-rollen for Sikt + Når jeg åpner detaljsiden for applikasjonen + Så ser jeg de samme administrasjonshandlingene som for en Feide- eller Maskinporten-applikasjon + Men jeg ser ingen handling for å opprette en ny applikasjon med FS som identitetsleverandør + Regel: Opprettelse krever en organisasjon Scenario: Opprette applikasjon når administrator har tilgang til kun én organisasjon @@ -171,3 +260,4 @@ Egenskap: Opprette applikasjon Gitt jeg har opprettet en ny applikasjon Så kan applikasjonen autentisere seg umiddelbart med sin eksterne identitet Men applikasjonen får ikke tilgang til data før den har en tilgang i et miljø + Og en applikasjon med FS som identitetsleverandør venter på passord per miljø før den kan autentisere seg i det miljøet diff --git a/krav/07 Brukeradministrasjon og tilgangsstyring/applikasjoner/02 Iterasjon 3 - Grunnleggende tilgangsstyring for intern support/systemkrav.md b/krav/07 Brukeradministrasjon og tilgangsstyring/applikasjoner/02 Iterasjon 3 - Grunnleggende tilgangsstyring for intern support/systemkrav.md index 1f25088..8d11952 100644 --- a/krav/07 Brukeradministrasjon og tilgangsstyring/applikasjoner/02 Iterasjon 3 - Grunnleggende tilgangsstyring for intern support/systemkrav.md +++ b/krav/07 Brukeradministrasjon og tilgangsstyring/applikasjoner/02 Iterasjon 3 - Grunnleggende tilgangsstyring for intern support/systemkrav.md @@ -29,7 +29,7 @@ Iterasjonen forutsetter at oversikt og detaljer fra Iterasjon 2 allerede er på **Brukerhistorie:** Som bruker med applikasjonsadministrator-rollen ønsker jeg å opprette en ny applikasjon, slik at nye integrasjoner kan konfigureres. -**Kort beskrivelse:** En applikasjon har én identitetsleverandør som velges ved opprettelse — Feide eller Maskinporten — og identitetsleverandøren kan ikke endres senere. FS er utfaset som identitetsleverandør for nye applikasjoner og kan ikke velges; eksisterende FS-applikasjoner består som data og forvaltes i den samme applikasjonsoversikten som Feide- og Maskinporten-applikasjoner — alle administrasjonshandlinger (listevisning, tilgangsstyring, passordbytte, beskrivelse, deaktivering) gjelder også for dem, det er kun opprettelse som er stengt. Feide og Maskinporten krever en ID som verifiseres mot kilden ved opprettelse; navnet hentes fra samme oppslag, og ID-en kan ikke registreres på nytt hvis applikasjonen allerede finnes. Systemet tildeler i tillegg en intern unik ID til hver applikasjon, og visningsnavnet (hentet fra idP-en) må være globalt unikt på tvers av alle organisasjoner. Alle administratorer må velge en organisasjon — vanlig administrator velger blant sine, super-applikasjonsadministrator blant alle. Nyopprettet applikasjon har ingen tilganger og er ikke aktiv i noen miljøer, men kan autentisere seg umiddelbart med sin eksterne identitet. +**Kort beskrivelse:** En applikasjon har én identitetsleverandør som velges ved opprettelse — Feide eller Maskinporten — og identitetsleverandøren kan ikke endres senere. FS er utfaset som identitetsleverandør for nye integrasjoner og kan ikke velges av en lokal administrator, men opprettelse er ikke stengt: applikasjonsadministratorer hos Sikt kan opprette maskinbruker-applikasjoner så lenge FS' webtjenester lever — opprettelsen provisjonerer en maskinbruker der, med replikering av passordet, og det er en flate Sikt drifter. Bare opprettelsen er gatet hos Sikt; den løpende forvaltningen av en maskinbruker-applikasjon som finnes følger BRU-APP-API-006, BRU-APP-API-010 og BRU-APP-API-004, altså rettigheten hos organisasjonen som eier applikasjonen. Eksisterende maskinbruker-applikasjoner forvaltes i den samme applikasjonsoversikten som Feide- og Maskinporten-applikasjoner — alle administrasjonshandlinger (listevisning, tilgangsstyring, passordbytte, beskrivelse, deaktivering) gjelder også for dem. Feide og Maskinporten krever en ID som verifiseres mot kilden ved opprettelse; navnet hentes fra samme oppslag, og ID-en kan ikke registreres på nytt hvis applikasjonen allerede finnes. Systemet tildeler i tillegg en intern unik ID til hver applikasjon, og visningsnavnet (hentet fra idP-en) må være globalt unikt på tvers av alle organisasjoner. Alle administratorer må velge en organisasjon — vanlig administrator velger blant sine, super-applikasjonsadministrator blant alle. Nyopprettet applikasjon har ingen tilganger og er ikke aktiv i noen miljøer, men kan autentisere seg umiddelbart med sin eksterne identitet. ### K6, K13 — Tildele tilgang til applikasjon @@ -66,4 +66,5 @@ Iterasjonen forutsetter at oversikt og detaljer fra Iterasjon 2 allerede er på - Iterasjonen forutsetter at Iterasjon 2 (oversikt, detaljer, tilganger, passordbytte, beskrivelse) er på plass. - K10 er bevisst utelatt — deaktivering er sluttilstanden, ingen permanent sletting. - Selvbetjent administrasjon av tilganger (K13/K14) er allerede dekket av disse features via rettighetsregler — Iterasjon 4 fokuserer derfor på sporbarhet, ikke duplikater av denne funksjonaliteten. -- FS som identitetsleverandør er utfaset for nye applikasjoner i tråd med rammeinnsikten (Confluence 4401102853). Eksisterende FS-applikasjoner består som data og forvaltes i den nye applikasjonsoversikten på lik linje med Feide- og Maskinporten-applikasjoner — alle administrasjonshandlinger (listevisning, tilgangsstyring, passordbytte, beskrivelse, deaktivering, reaktivering) gjelder for dem. Det er kun opprettelse som er stengt. Maskinbruker-POC-en for legacy FS-applikasjoner avvikles når den nye løsningen er på plass — det er den nye applikasjonsoversikten som blir det eneste administrasjonsgrensesnittet. +- FS som identitetsleverandør er utfaset for nye integrasjoner i tråd med rammeinnsikten (Confluence 4401102853). Eksisterende FS-applikasjoner består som data og forvaltes i den nye applikasjonsoversikten på lik linje med Feide- og Maskinporten-applikasjoner — alle administrasjonshandlinger (listevisning, tilgangsstyring, passordbytte, beskrivelse, deaktivering, reaktivering) gjelder for dem. Maskinbruker-POC-en for legacy FS-applikasjoner avvikles når den nye løsningen er på plass — det er den nye applikasjonsoversikten som blir det eneste administrasjonsgrensesnittet. +- **Besluttet 24. august 2026:** opprettelse av maskinbruker-applikasjoner er ikke stengt, men Sikt-only. Applikasjonsadministratorer hos Sikt kan opprette dem så lenge FS' webtjenester lever; selvbetjent opprettelse hos lærestedene er fortsatt stengt. Begrunnelsen er at opprettelsen provisjonerer en maskinbruker i FS' webtjenester, med replikering av passordet — en integrasjonsflate Sikt drifter, og som bør kunne forvaltes fra applikasjonsoversikten framfor av databaseforvaltningen. Avgrensning: bare opprettelsen er Sikt-gatet. Forvaltningen av en maskinbruker-applikasjon som finnes (navn og beskrivelse, deaktivering og reaktivering, passordbytte) følger BRU-APP-API-006, BRU-APP-API-010 og BRU-APP-API-004 med rettigheten hos organisasjonen som eier applikasjonen.