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-toolbeltdro med seg en rekke avhengigheter. Meddapla-auth-clientfå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(
credentials=AuthClient.fetch_google_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 AuthClientbytter du til:
from dapla_auth_client import AuthClient- Fjern eksplisitte kall til Google‐credentials
Bytt ut:
storage_client = storage.Client(
credentials=AuthClient.fetch_google_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
token = AuthClient.fetch_personal_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!