Ny utvikler i Altinn Autorisasjon
Slik blir du kjent med systemet, kodebasene og utviklingsarbeidet den første uken.
Målet med denne veiledningen er at du skal forstå ansvarsgrensene, kunne bygge relevant kode og følge en autorisasjonsbeslutning gjennom systemet. Be fadderen din bekrefte hvilke miljøer og komponenter du skal arbeide med.
Når du er ferdig
Du skal kunne
- forklare identitet, part, representasjon, ressurs, rettighet, PDP og PEP
- finne komponenten og repoet som eier en endring
- bygge og teste minst ett relevant repo
- følge en
Permitog en forventetDeny - finne logger, spor og riktig eier
Første dag
Avklar tilgang til GitHub-repoene, teamets arbeidsflater, relevant Azure-konto og testmiljø, observabilitetsverktøy og godkjent hemmelighetshåndtering. Du trenger ikke produksjonstilgang for å begynne.
Les i denne rekkefølgen:
- Systemarkitekturen.
- Informasjonsmodellen.
- Komponentoversikten.
- Den kjørbare autorisasjonsflyten.
- Sikkerhet og tillit.
Bruk kontrollspørsmålene: Hvem handler, hvilken part representeres, hvilken ressurs og handling gjelder det, hvor kommer rettigheten fra, hvem håndhever beslutningen, og hvor kan hendelsen spores?
Finn riktig repo
| Område | Repo |
|---|---|
| Innlogging, sesjon og token | altinn-authentication |
| Part og representasjon | altinn-register |
| Ressursmetadata og policy | altinn-resource-registry |
| Tilgang, delegering og PDP | altinn-authorization-tmp |
| Brukerflate og BFF | altinn-access-management-frontend |
| Audit-hendelser | altinn-auth-audit-log |
Resource Registry skal flyttes til monorepoet. Bekreft alltid hvilken kopi som er autoritativ.
Bygg før du endrer
Repoets README er fasiten. For monorepoet er en kort grunnkontroll:
dotnet build Altinn.Authorization.sln
dotnet test -- --filter-trait "Category=Unit"
Integrasjonstester krever en containermotor. Et grønt enhetstestsett dekker ikke hele integrasjonen.
Første hovedøvelse
Følg én autorisasjonsbeslutning ende til ende. Gjør øvelsen sammen med en fadder første gang dersom du trenger testmiljø, abonnementnøkkel eller testdata.
Ikke kopier tokens, nøkler eller personopplysninger til dokumentasjon, terminalhistorikk, skjermbilder eller pull requests.
Første kodeendring
Velg en liten endring innenfor én komponentgrense med en tydelig test og trygg tilbakerulling. Før pull requesten skal du kjøre relevante tester, beskrive endret oppførsel, oppgi eventuell leveranserekkefølge og kontrollere at artefaktene ikke inneholder hemmeligheter.
Første uke
- følg en
Permitog enDeny - se hvordan en ressurs og policy registreres
- finn en delegering i Access Management-modellen
- følg en hendelse til Audit Log
- finn komponentens dashbord og viktigste signaler
- les komponentens mønstre og persistensmodell
- delta i en reell kodegjennomgang
Forslag til femdagers onboardingløp
Planen er et utgangspunkt. Bytt rekkefølge dersom den første arbeidsoppgaven din krever en annen komponent.
Dag én: Systemet og språket
Mål: Forklar hva Altinn Autorisasjon gjør uten å begynne med repo- eller klassenavn.
- Les systemarkitekturen, informasjonsmodellen og komponentoversikten.
- Tegn tillitskjeden med egne ord: identitet, representasjon, ressurs, rettighet, beslutning og sporbarhet.
- Velg én brukerhistorie, for eksempel at en systembruker leser en ressurs på vegne av en virksomhet.
- Plasser PDP, PEP og de autoritative datakildene i historien.
- Gå gjennom modellen med fadderen.
Leveranse: En kort muntlig forklaring og en liste over begreper du fortsatt er usikker på.
Kontrollpunkt: Du skiller identiteten som handler fra parten den handler på vegne av, og du vet at PDP beslutter mens PEP håndhever.
Dag to: Repoet og utviklingsmiljøet
Mål: Bygg den relevante koden og forstå repoets grenser.
- Klon eller oppdater repoet du skal arbeide i.
- Les
README.md, løsningsstrukturen og relevanteAGENTS.md-filer. - Finn applikasjonsprosjektet, domenekjernen, integrasjonene, persistenslaget og testene.
- Kjør bygging og det korteste enhetstestsettet.
- Finn pull request-arbeidsflyten og se hvilke kontroller som kjøres.
- Noter hvilke avhengigheter som krever containere, Azure eller et delt miljø.
For monorepoet kan du begynne med:
dotnet build Altinn.Authorization.sln
dotnet test -- --filter-trait "Category=Unit"
Leveranse: Et vellykket lokalt bygg og en enkel skisse av mappene du forventer å endre.
Kontrollpunkt: Du vet hvilken kode som er autoritativ, og hvilke tester som ikke ble kjørt av den korte kontrollen.
Dag tre: Beslutningen i praksis
Mål: Kjør og forklar både en tillatt og en avslått beslutning.
- Gjennomfør den kjørbare autorisasjonsflyten.
- Undersøk forespørselens subjekt, ressurs, handling og ressursparti.
- Følg
DecisionController, Context Handler, PRP og PDP. - Finn hvor rollebeslutningen går videre til delegeringer.
- Finn hvor en tilgangsliste kan endre et foreløpig
PermittilDeny. - Kjør en eksisterende negativ Bruno-test eller avtal et trygt negativt scenario med fadderen.
- Sammenlign resultat og statuskode.
Leveranse: En tabell med inngangsdata, datakilder, beslutning og begrunnelse for de to testene.
Kontrollpunkt: Du kan skille en domenebeslutning fra manglende API-tilgang og fra teknisk evalueringsfeil.
Dag fire: Data, integrasjoner og observabilitet
Mål: Finn hvor beslutningsgrunnlaget kommer fra, og følg det gjennom driftsflatene.
- Åpne persistensmodellen til komponenten du arbeider med.
- Finn tabellen, blobben, køen eller det eksterne API-et som leverer hvert viktig datapunkt.
- Velg én integrasjon og dokumenter eier, kontrakt, autentisering, timeout og feiloppførsel.
- Kjør golden path på nytt med en trace- eller korrelasjons-ID.
- Finn relevante logger, spor og målinger.
- Følg audit-hendelsen så langt tilgangen din tillater.
- Kontroller at observabilitetsdataene ikke eksponerer hele tokens eller unødvendige personopplysninger.
Leveranse: En kort feilsøkingslogg som viser hvor du lette, hvilke signaler du fant og hvor eierskapet skiftet.
Kontrollpunkt: Du vet forskjellen mellom komponentens autoritative data, hurtigbuffer og data som leses fra en annen tjeneste.
Dag fem: Første trygge endring
Mål: Levere en liten, reell forbedring gjennom den vanlige arbeidsflyten.
Velg sammen med fadderen en endring som kan være
- en test som tydeliggjør eksisterende oppførsel
- bedre feilhåndtering eller observabilitet
- en avgrenset dokumentasjonsrettelse nær koden
- en liten feil med kjent forventet resultat
Gjør deretter følgende:
- Beskriv forventet oppførsel før du endrer koden.
- Lag eller identifiser testen som beskytter oppførselen.
- Gjør den minste nødvendige endringen.
- Kjør relevante enhets- og integrasjonstester.
- Kontroller om kontrakter, migreringer eller leveranserekkefølge påvirkes.
- Åpne en pull request med testbevis og tilbakerullingsvurdering.
- Gå gjennom tilbakemeldingene sammen med fadderen.
Leveranse: En liten pull request som følger teamets kvalitetskrav.
Kontrollpunkt: En annen utvikler kan forstå hvorfor endringen er trygg, hvordan den ble prøvd og hvilke komponenter den påvirker.
Oppsummering med fadderen
Avslutt uken med å vurdere disse punktene:
| Område | Jeg kan selv | Jeg trenger mer øvelse |
|---|---|---|
| Forklare domenebegrepene | ||
| Finne riktig komponent og repo | ||
| Bygge og kjøre relevante tester | ||
Følge en Permit og en Deny | ||
| Finne beslutningsgrunnlaget | ||
| Bruke logger, spor og målinger | ||
| Gjøre en trygg liten endring |
Avtal ett fagområde du skal fordype deg i den neste måneden, og én konkret oppgave der du kan bruke kunnskapen.
Når du står fast
| Symptom | Første kontroll |
|---|---|
401 eller 403 før PDP-svar | token, scope, abonnementnøkkel og API-grense |
Deny | subjekt, representert part, ressurs, handling og tilgangsliste |
NotApplicable | ingen policyregel passer |
Indeterminate | ugyldig kontekst, manglende policy eller evalueringsfeil |
| ulikt resultat mellom miljøer | testdata, policyversjon, delegeringer, funksjonsflagg og konfigurasjon |
| manglende audit-hendelse | funksjonsflagg, kø, prosessor og korrelasjon |
Ikke endre en delt database direkte for å få testen til å virke. Bruk det støttede API-et eller testdataflyten.