diff --git a/doc/DESIGN.md b/doc/DESIGN.md new file mode 100644 index 0000000000000000000000000000000000000000..4d76211d8d60b8c53e55dc2c1271159dfa23175b --- /dev/null +++ b/doc/DESIGN.md @@ -0,0 +1,94 @@ +# Designdokument for gjesteregistreringsløsning + + +## Innledning +Gjesteregistreringsløsningen (GREG, Guest REGistation) tilbyr et grensesnitt der institusjoner kan legge inn data +om personer som trenger gjestekontoer for å få tilgang til IT-tjenester. Tjenesten kan integrere med institusjonens IAM (Identity and access management) +løsning for overføring av data til denne. + +Hver institusjon som ønsker å bruke GREG vil ha sin egen instans som bare inneholder +data om brukere ved den institusjonen. + +GREG kan på lang sikt komme til å bli erstattet av gjestehåndtering i et personalsystem. + +### Brukerroller +Det er to brukerkategorier i tjenesten: +- Sponsorer: Dette er brukere ved institusjonene som kan invitere gjestebrukere +- Gjester: Dette er personer lagt inn av sponsorer og som ønsker tilgang til IT-systemene ved institusjonen + +### Kontakt +- Systemeier: *TODO* + +## Redegjørelse +Dagens løsning i DFØ-SAP for å registrere gjestebrukere dekker ikke behovene til UiO og UiB, og det ble avgjort å utvikle +en alternativ løsning for å få et system mer i tråd med behovene på plass innen kort tid. + +Systemet består av to deler, en kjerne og en selvbetjeningsløsning, og kommunikasjon mellom disse skjer gjennom et +REST API kjernen gjør tilgjengelig. + +Ved å splitte funksjonaliteten på denne måten er teknologivalg gjort i selvbetjeningsløsningen, som er frontenden +sluttbrukerne ser, uavhengig av kjernen. Så utviklerne kan på hver sine side, frontend og backend, velge teknologier de er komfortable med. + + +### Designvalg + +#### Kjerne +Kjernen er utviklet med Django, et populært webrammeverk i Python som har mange tilleggsmoduler +som gjør utviklingen enklere. USIT har kompetanse på Django, og det er allerede brukt i Kada og Mreg. + +#### Selvbetjeningsløsning +*TODO* + +## Detaljbeskrivelse + +### Teknisk formål +Kjernen har som hovedoppgave å lagre data om gjestene, sende notifikasjoner om relevante endringer +via en meldingskø og tilby et REST API for å lagre og hente ut data. + +Endringer som det publiseres meldinger for inkluderer opprettelse av nye gjester i kjernen, endring gjort på +eksisterende gjester og sletting av gjester. + +IAM-systemet ved en institusjon kan lytte på meldingskøen kjernen publiserer til for å bli gjort oppmerksom +på endringer for gjester. Informasjonen i meldingene kan brukes til å gjøre oppslag i API'et. + +Kjernen vil også periodisk slette persondata for gjester som ikke lenger er aktive. + +Adgangskontroll til API'et skjer gjennom Gravitee. + +Selvbetjeningsløsningen lar sponsorer opprette gjester og lar gjestene legge inn identitetsinformasjon. Det er +selvtjeningsløsningen som har ansvaret for flyten gjennom registreringsforløpet, dvs. den sender for eksempel ut e-poster +til gjestene om at de må legge inn informasjon og til sponsorene om at de må godkjenne gjester som har lagt inn informasjon. + +Selvbetjeningsløsningen bruker kjernen hovedsaklig for å lagre informasjon. + +### Høynivådesign + + +### Lavnivådesign + +#### Kjerne +For å tilby et REST API brukes "Django REST framework". +En [OpenAPI](https://swagger.io/specification/) spesifikasjon av API'et er tilgjengelig +(generert ved hjelp av [drf-spectacular](https://github.com/tfranzel/drf-spectacular)) + +Sending av meldinger til RabbitMQ skjer ved hjelp av [pika-context-manager](https://git.app.uib.no/it-bott-integrasjoner/pika-context-manager) biblioteket. + +Tilgangskontroll til API'et skjer via Gravitee. Brukerne av API'et er selvbetjeningsløsningen og +institusjonens IAM-system. + +### Selvbetjeningsløsning +*TODO* + +## Avhengigheter +- RabbitMQ: Brukes for å sende meldinger til andre systemer +- Harbor: Lagring av container images +- Openshift: Applikasjonsplattform for å kjøre containere +- Gravitee: Tilgang til API styres gjennom Gravitee +- Institusjonens IAM system. + +## Relaterte systemer +- Cerebrum: Brukeradministrasjonssystem ved UiO. Henter data fra GREG og oppretter brukerkontoer. Sender data tilbake til Greg om hvilke gjester som har fått brukerkontoer. +- RI: Brukeradministrasjonssystem ved UiB. Opererer etter samme mønster integrasjonen mellom Cerebrum og GREG. + +## Lenker og referanser +Koden til GREG finnes på UiB sin Gitlab-instans [her](https://git.app.uib.no/it-bott-integrasjoner/greg). \ No newline at end of file diff --git a/doc/overview_components.png b/doc/overview_components.png new file mode 100644 index 0000000000000000000000000000000000000000..2f00e01d00035582482501663cc7c2bb3996c0b2 Binary files /dev/null and b/doc/overview_components.png differ