-
Logg inn på repl.it med konto fra google, github eller facebook
-
I repl.it: Gå inn i filen
main.py
. Finn linjen medAPP_BASE_URI
og bytt utUSERNAME
med ditt brukernavn i repl.it. Brukernavnet står øverst til venstre, f.eks.@pelle42
. Ikke ta med@
-tegnet. -
Opprett en klient med https://dashboard.dataporten.no. Bruk knappen [ Registrer ny applikasjon ]. Sett
redirect_uri
til verdien avAPP_BASE_URI
etterfulgt av/redirect_uri
. Godta brukervilkårene. -
Gå til 'OAuth detaljer' i dashboard og finn
client_id
. Finn linjen medAPP_CLIENT_ID
i koden og bytt ut verdien med dinclient_id
. -
Finn
client_secret
samme sted i dashboard. Finn filen.env
i repl.it, og bytt ut verdien bakAPP_SECRET=
med verdien avclient_secret
. -
Trykk på
Run
-knappen i repl.it -
Etter en stund dukker det opp en minibrowser i repl.it. Vi kan ikke bruke denne, men vi kan gå til samme URL i en annen tab. Logg derfra inn med Feide
-
Den lokale sesjonen løper ut etter ett minutt. Det går også an å logge ut ved å gå til samme URL etterfulgt av
/logout
.
NB: id_token
er signert. For enkelhets skyld viser vi ikke her hvordan vi verifiserer signaturen.
Når vi har logget inn, kommer vi til en side med info som applikasjonen har fått fra Feide:
- access_token: En streng av hex-sifre som bare Feide kan tolke.
- id_token: Dette er jwt med info om brukeren. I Feide inneholder den svært lite. Siden viser token etter dekoding.
- userinfo: Kommer fra OpenID Connect userinfo-endepunktet.
- mygroups: Gruppene innlogget bruker er med i. Kommer fra Feides gruppe-API.
Applikasjonen demonstrerer 'authorization code flow'. Gangen er:
get_code
redirigerer brukers browser tilauthorization_endpoint
hos Feide.- Feide autentiserer brukeren hvis ikke allerede innlogget, og redirigerer til denne applikasjonens
/redirect_uri
-endepunkt med autentiseringskode som parameter. get_token
kaller Feidestoken_endpoint
med den koden den nettopp fikk fra Feide, og får tilbake enaccess_token
og enid_token
. Vi lagrer disse i brukersesjonen, og redirigerer til hovedsiden i applikasjonen- På hovedsiden ser vi at vi nå er innlogget. Vi henter ut
access_token
ogid_token
fra brukersesjonen. Vi brukeraccess_token
til å hente ut brukerinfo og gruppeinfo. Til slutt viser vi frem alt sammen.