Steffen Jørgensen

Konsulent i koronatider: En IT-eksperts synspunkter

Om å implementere OAuth 2.0- og OpenID-godkjenningsprotokoller, starte et nytt prosjekt eksternt i en koronatid og å utvikle på Microsoft-stakken i 2020.

 

Les intervju med seniorutvikler Steffen Jørgensen på konsulentoppdrag i forsikringsbransjen.

Mølholm Forsikring (en del av Gjensidige Forsikring) har tatt konsulent Steffen Jørgensen om bord. Der skal han stå for integrasjonen av et nytt autentiseringssystem og oppdatere gjeldende protokoller med OAuth 2.0 og OpenID Connect. For denne viktige oppgaven trengte Mølholm Forsikring en spesialist med relevant praktisk erfaring, og som kunne gå inn og levere i et stramt program.


Steffen Jørgensen forteller om:

Autentiseringsprotokoller: Ny og gammel teknologi

Starte et nytt oppdrag under korona-krisen

Utvikling på Microsoft-stakken i 2020

Blazor - Microsofts utfordrer til JavaScript


Autentiseringsprotokoller: Om å velge rett mellom ny og gammel teknologi

Steffens jobb er å implementere OAuth 2.0 og OpenID Connect. Dette er noe han har gjort med stor suksess tidligere med "NemID" (eBoks). I rollen hos Mølholm er Steffen ansvarlig for å integrere med en Single-Sign-On server (SSO), noe som betyr at brukere som logger på Gjensidige, helt automatisk logger på Mølholm også.

– Når du logger på Gjensidige eller Mølholm, er det via NemID i Danmark. Gjensidige har en SSO-server, som Mølholms webapplikasjon trenger å innpasse med. SSO-serveren håndterer hele påloggingsflyten for brukeren, så når brukeren er logget inn på Gjensidige, er vedkommende også logget inn på Mølholm.

– Integrasjonen med SSO-serveren som bruker OAuth 2.0 og OpenID Connect-protokollen, er i dag er de facto-standarden for påloggingsprosesser, forteller Steffen Jørgensen.

 

OpenID Connect (OIDC)

OpenID Connect (OIDC) er en autentiseringsprotokoll basert på OAuth 2.0-spesifikasjonsfamilien. JSON Web Tokens (JWTs) oppnås gjennom autentiseringsstrømmer som samsvarer med OAuth 2.0-spesifikasjonene. OAuth 2.0 er konsentrert på ressurstilgang og deling. JWT inneholder såkalte ‘påstander’ som kan brukes av applikasjonen (eller Relying Party) for å autorisere hva brukeren kan og ikke kan gjøre, og gir grunnleggende informasjon om brukeren eller andre relevante data til Relying Party.

Det er derfor mange forskjellige godkjennings«flows» å vurdere, og det er derfor viktig å velge den rette som passer til det aktuelle scenariet:

Det er mange forskjellige typer pålogginger som denne protokollen støtter.

– Brukere kan logge på via nettleseren i en vanlig web-applikasjon. Det kan også være via en Single-Page App (SPA), eller via en «native» app på telefonen deres. I tillegg støtter protokollen også autentisering for server-til-server-oppkall, der en server i utgangspunktet må autentisere seg med en annen server for å bruke et bestemt API.

– Alle de forskjellige typene av klientintegrasjoner har vidt forskjellige sikkerhetsutfordringer. Det er derfor viktig å velge riktig påloggingsflyt, samt å implementere i riktig rekkefølge, for å gjøre den så sikker som mulig.

– Alt i alt legger det til mye kompleksitet, og det krever god forståelse av de forskjellige klientscenariene for å kunne sette det opp riktig, utdyper den erfarne, danske frilanskonsulenten.

 

Monolittisk struktur

Utgangspunkt for Mølhom forsikring er en monolittisk struktur, som alltid er en utfordring når du starter som ekstern konsulent.

– Det kan det være overveldende å komme ombord som frilanser med oppgave å utvikle nye løsninger i den klassiske monolittstrukturen, da all logikken hører hjemme i en og samme applikasjon. På den annen side, hvis det er microservice -arkitektur, er det mye lettere å få oversikt over hva hver tjeneste gjør.

I den første oppdagelsesfasen er det ekstremt viktig å ta hensyn til den spesifikke teknologien man jobber med.

– Ofte vil det være nødvendig å gå ned i «materien», hvis rammeverket ikke er den siste versjonen. Derfor er det viktig at man i planleggingsfasen av prosjektet tar hensyn til den spesifikke versjonen av rammeverket. Nettopp fordi det kan være begrensninger på hva den gjeldende versjonen kan gjøre med den nyeste versjonen av samme teknologi.

– For eksempel har jeg jobbet mye med .NET Core, som er nyere og derfor også har mye bedre støtte for OIDC sammenlignet med et ASP.NET MVC-program. Det er mye mer manuelt og tidkrevende å sette opp påloggingsflyter i sistnevnte, da komponentene du har i .NET Core ganske enkelt ikke er tilgjengelige der. Det gjør det litt vanskeligere, og siden sikkerhet er viktig, opererer du allerede med en veldig liten feilmargin, forteller Steffen Jørgensen.

To menn som sitter i et møte med laptop pog dokumenter
Steffen mener Corona har vist hvor viktig det er å holde fysiske møter for å bygge tillit.

Startet et nytt oppdrag under korona-krisen

Den største utfordringen for Steffen var ikke det tekniske. I stedet var det å starte et nytt prosjekt i en ny organisasjon akkurat da koronaviruset lukket ned hele verden.

– For avanserte IT-konsulenter er det normalt å forvente en viss grad av fjernarbeid. Det er av natur en veldig uavhengig rolle, og med dagens teknologi er det praktisk talt ikke nødvendig å jobbe fra kundens kontorer. Når IT-konsulenter blir hentet ombord for å hjelpe til med komplekse prosjekter, så starter det hele med å få en oversikt over den gjeldende organisasjonen. I denne prosessen involverer det gjerne en rekke ansikt-til-ansikt-møter med de nødvendige interessenter.

Men COVID-19 snudde det hele på hodet. Ut over en rutinemessig konsulenthverdag – ofte preget av høyt arbeidspress, stramme tidsfrister og en bratt læringskurve – kom plutselig viruset som en ny faktor. Det krevde ekstra fleksibilitet og endringsberedskap fra den eksterne konsulenten.

– På toppen av det har jobben blitt utført hundre prosent eksternt på grunn av nedstengningen. Det tilførte et ekstra lag av kompleksitet i kommunikasjonen.

"

... “I løpet av prosjektet har jeg måttet navigere mellom interessenter i to sammenslåtte selskaper, lokalisert i to forskjellige land: Danmark og Norge

"

Team i Danmark og Norge

– Og med det danske teamet i Odense i Danmark og hovedorganisasjonen Gjensidige i Norge, så gjorde koronaviruset at jobben ble mer utfordrende. Du kan si at jeg har lært å navigere i to forskjellige kulturer samtidig."

Steffen startet oppgaven akkurat da hele verden stengte ned pga viruset, og tvang alle til å jobbe med hjemmekontor. Eksterne konsulenter er vant til å jobbe selvstendig og er mestre på fjernarbeid. Men man bør ikke undervurdere hvor viktig det er å holde fysiske møter, spesielt i den avgjørende oppstartsfasen av et prosjekt, mener Steffen:

Det har vært litt av en ‘lone-ranger’-oppgave.

– Dette er første gang jeg utelukkende jobber eksternt. Jeg har ikke noen problemer med hjemmekontor og fjernarbeideformatet, det er tross alt en del av jobben. Og så lenge jeg har tilgang til nødvendig dokumentasjon er jeg selvkjørende og i stand til å levere.

– Likevel har effekten av korona gjort meg mer bevisst på hvor mye jeg setter pris på fysiske møter. Det har medført at jeg alltid har prioritert å bruke webkamera. Det tror jeg hjelper å gjøre virtuelle møter mer ‘normale’, dessuten bidrar det til at kontakten og interaksjonen med interessentene blir mer naturlig og menneskelig.

 

Møte ansikt til ansikt

Ifølge Steffen har koronaperioden understreket viktigheten av å holde møter ansikt til ansikt for å bygge tillit. Da det øker moral og hjelper i pressede situasjoner når man leverer på frister.

– Som mennesker er vi flinke til å dekode hverandres kroppsspråk; 'forsto han hva jeg nettopp sa?’, ‘er en vits passende her?', og tilsvarende. Prosessen med å skape sosiale relasjoner er en stor utfordring når du jobber eksternt.

"Relasjonsbygging bør prioriteres fordi vi er mennesker og ikke roboter."

– Regelmessig mellommenneskelig samhandling gir spillerom og bygger en slags kreditt med andre mennesker som oversettes til tillit. Det er utrolig nyttig når arbeidsintensiteten øker og alle er under press for å levere i tide, sier Steffen Jørgensen.

Konsulent Steffen Jørgense med laptop-veske
Steffen Jørgensen mener man bør prioritere relasjonsbygging.

Om å utvikle seg på Microsoft-stakken i 2020

I løpet av prosjektet har Steffen utnyttet sin ekspertkunnskap innen Microsoft-stack’en. Før frilanskarrieren jobbet han som backend-utvikler på teleselskapet 3 i nesten et tiår. Han er senior .NET-utvikler og dyktig backend-spesialist med betydelig erfaring i konstruksjonsspesifikasjon.

– Jeg har alltid jobbet i backend, og Microsoft dominerer i dette området. I mange år har .NET vært en plattform for mange utviklere. Legger du til at Danmark er et 'Microsoft-land', med stor etterspørsel etter utviklere med kompetanse innen Microsoft-stakken. Dermed har du mange av faktorene som sammen har formet karriereveien min", forteller Steffen.

Det går bra for Microsoft i disse dager. De kommer stadig med nye programvareløsninger på flere fronter og har en populær skyløsning i Azure. Det betyr at det er spennende å arbeide med utvikling i dette feltet:

– Med risiko for å høres ut som en Microsoft-fyr, liker jeg det de gjør og den generelle metoden de har for å utvikle nye løsninger. Du kan se at de prøver å tenke utenfor boksen. De er i forkant av ny spennende teknologi og er oppe og kjemper mot de andre store ‘guttene’ som Google, Amazon og Facebook.

– Konkurransen er hard og selvfølgelig gjøres det feil underveis, men synes jeg bare er bra. Det er et bevis på at de er risikovillige og presser grensene for hva som er mulig, noe som vil gi bedre løsninger på sikt, mener Steffen Jørgensen.

Suksess med .NET Core

Microsoft har hatt betydelig suksess med .NET Core, den nye open-source, cross-plattform og modulær implementering av. NET-rammeverket. Selv om .NET-rammeverket fremdeles er utbredt, viser en undersøkelse utført av StackOverflow i 2020 at .NET Core er det "mest elskede" ikke-web-rammeverket blant utviklere, etterfulgt av Torch / PyTorch og Flutter.

NET Core er fantastisk. Jeg elsker at de har gått den veien med .NET Core (åpen kildekode og cross-plattformen). Samtidig er tempoet med oppdateringer og nye versjoner også bra.

1200px-.NET_Core_Logo.svg

Tilpasser tech-stakken

– Microsoft gjør det bra med å tilpasse sin tech-stakk etter det skiftet vi ser mot microservices-arkitekturen. Og siden .NET Core er en plattform-agnostisk, passer den også perfekt i ‘Continuous Delivery’ ved bruk av containere. Målet er å kunne legge programmet i en container, laste det opp til skyen eller et annet sted, uten å tenke på om serveren kjører Windows eller Linux. Det er helt irrelevant, da det ikke er bundet til noen av dem.

– Og når det gjelder ytelse, er .NET Core bedre enn det gamle .NET-rammeverket. Det er i perfekt samsvar med dagens krav til moderne arkitekturer. Hvis det er Microservices man skal bygge, må de være skalerbare og svært effektive for å løse oppgaven de er ment å løse. Dette løser flaskehalsproblemene som klassisk monolittisk arkitektur ofte lider av, mener Steffen Jørgensen.

Blazor - Microsofts fremtidige utfordrer til allmektig JavaScript

Blazor er et annet populært tema i Microsoft-universet som Steffen er veldig spent. Blazor er et nytt cross-platform web UI-framework som vil ta opp kampen mot JavaScript. Det er gratis og åpen kildekode og lar utviklere lage webapper med C# og HTML.

– Blazor er Microsofts utfordrer til Angular, React og Vue. Det tar JavaScript helt ut av ligningen, som hittil har vært det de facto programmeringsspråket som blir brukt på nettleser og klientnivå. Blazor gir muligheten til å utvikle front-end-logikk med C#. Dette betyr at du kan oppbevare all koden din på ett språk, og få fordelene ved å bruke alle normale utviklingsprosesser og verktøyer som TDD og ​​enhetstesting, sier Steffen.

"

... Det ganske kult å være en frilansutvikler på Microsoft-stakken i disse dager. Jeg er spent på å se hvor utviklingen av Blazor lander og om den blir en hit og den nye go-to-plattformen i sin nisje.

"

Blazor er tilgjengelig i to versjoner: En for serversiden og en for klientsiden.

– Blazor på serversiden kjører all kode på serveren og kommuniserer med nettleseren ved hjelp av SignalR. Dette fungerer veldig bra. Den lastes raskt og SignalR er en velprøvd tilnærming til nettleser-server-kommunikasjon. Imidlertid er det en ulempe, fordi med SignalR kan det være problemer med skalerbarhet i denne modellen.

– WebAssembly Blazor tar en helt annen vei. Her lastes alle nødvendige .NET-DLL’er for klienten ned og kjøres deretter direkte på klienten ved hjelp av WebAssembly (WASM). Dette er en enorm fordel, ettersom applikasjonen fremdeles fungerer hvis forbindelsen til serveren går tapt – bortsett fra hvis data skal sendes og mottas. Det gir også muligheter for at applikasjonen kan være en progressiv webapp, der brukeren installerer applikasjonen på enheten som en innfødt app.

Men selv om det er fordeler, har Microsoft fortsatt et hinder å overvinne hvis Blazor skal hamle opp med JavaScript:

– Den største ulempen er at nedlastningen kan være ganske stor. Den første produksjonsutgivelsen av Blazor WASM (utgitt i mai 2020) har en nedlastningsstørrelse på knapt 2 MB. Avhengig av internettforbindelsen din kan dette være et problem, på grunn av tiden det tar applikasjonen å laste klienten. Dette kan være et problem for noen, selv om de fleste brukere i den vestlige verden har ganske rask internettforbindelse tilgjengelig.

Hvis Microsoft kan gjøre nedlastningen av rammeverket mindre – og derved løse problemet med innlesingshastigheten – så har de nok en vinner på plass i form av Blazor", avslutter Steffen.

Frilanskonsulent Steffen Jørgensen smiler til kamera

Konsulent Steffen Jørgensen

Steffen Jørgensen er en senior .NET-utvikler, med mer enn ti års erfaring i Microsoft-stakken. Hans styrke ligger i backend og i kravspesifikasjonsprosessen med kunden.

Frilanskonsulent Steffen Jørgensen har dessuten sterk agil erfaring med fire års erfaring som Scrum Master i tillegg til fire års implementering av smidige prosesser som teamleder.

BLOGG

Aktuelle artikler