Innledning
I dette blogginnlegget presenterer vi endringen der autentiseringsklassen er flyttet ut fra dapla-toolbelt
og inn i en egen Python-pakke kalt dapla-auth-client
. Hensikten er å gjøre det mulig å installere og bruke autentisering isolert, uten å måtte laste inn hele verktøykassen i dapla-toolbelt
.
Hvorfor separere autentisering?
Redusere avhengigheter
Mange brukere trenger kun autentiseringsbiten for å hente tokens til Google Cloud eller Keycloak. Tidligere måtte man installere og importere heledapla-toolbelt
, selv om man bare trengte én liten del. Ved å splitte ut en egen pakke blir installasjonen lettere og mer strømlinjeformet:[project] dependencies = [ "dapla-auth-client >=1.0.0", ]
Modularitet og enklere vedlikehold
Ved å holde autentiseringsflyten adskilt fra resten avdapla-toolbelt
, kan vi lansere feilfikser og nye funksjoner for OAuth2/Keycloak uten å påvirke de andre modulene.Lettvektskode for sluttbruker
Å importeredapla-toolbelt
dro med seg en rekke avhengigheter. Meddapla-auth-client
får man kun det som trengs for autentisering, og slipper unødvendige pakker.Skalerbarhet for fremtidige utvidelser
En dedikert autentiseringspakke gir oss frihet til å legge til flere Identity Providers eller nye token-flows senere uten å måtte endre idapla-toolbelt
.
Overgang fra gammelt til nytt bruk
Gammelt oppsett
from google.cloud import storage
from dapla import AuthClient
= storage.Client(
storage_client =AuthClient.fetch_google_credentials()
credentials )
Her krevde vi eksplisitt innlasting av credentials via AuthClient.fetch_google_credentials()
fra dapla-toolbelt
. Det medførte at hele dapla-toolbelt
ble installert, med alle avhengigheter.
Nytt oppsett
from google.cloud import storage
= storage.Client() storage_client
Nå håndteres Google-autentisering automatisk via Application Default Credentials (ADC). Vi trenger ikke lenger å kalle AuthClient.fetch_google_credentials()
, og vi slipper å importere hele dapla-toolbelt
.
Installere og ta i bruk dapla-auth-client
- Installer pakken
poetry add dapla-auth-client
- Bytt import
Dersom du tidligere importerte slik:
from dapla import AuthClient
bytter du til:
from dapla_auth_client import AuthClient
- Fjern eksplisitte kall til Google‐credentials
Bytt ut:
= storage.Client(
storage_client =AuthClient.fetch_google_credentials()
credentials )
med:
= storage.Client() storage_client
For funksjonen fetch_personal_token()
for Keycloak i Dapla Lab, importerer du tilsvarende fra dapla_auth_client
, men API-et er identisk:
from dapla_auth_client import AuthClient
= AuthClient.fetch_personal_token() token
De deprecated-metodene (fetch_google_credentials()
, fetch_google_token()
, osv.) vil fortsatt være tilgjengelige i dapla-auth-client
en stund til, men gir advarsler ved bruk og fjernes i kommende versjoner. Vi anbefaler å migrere til ADC-mønsteret så snart som mulig.
For dere som bruker dapla-toolbelt
og ikke har behov for å bruke AuthClient
direkte, er det eneste dere trenger å gjøre å oppgradere dapla-toolbelt
til nyeste versjon. Vi tar oss av alt det tekniske i bakgrunnen, slik at overgangen blir sømløs for dere.
Oppsummering
Ved å skille autentiseringsklassen ut i dapla-auth-client
:
- Får brukerne en lettere installasjon når de kun trenger autentisering.
- Unngår man unødvendige avhengigheter fra
dapla-toolbelt
. - Gjør vi koden mer modulær og enkel å vedlikeholde.
- Kan man bruke standard
storage.Client()
eller lignende funksjoner for Google Cloud, uten å tenke på credentials-henting.
Lykke til med migreringen!