Nais
Her poster Naisteamet informasjon om nyheter, endringer eller hendelser i plattformen.

Token Exchange as a Service (Texas)

Token Exchange as a Service (Texas )

De fleste applikasjoner som trenger autentisering må i dag forholde seg til mange detaljer rundt OAuth og JWTer. For å gjøre det lett å gjøre rett så har vi nå laget en tjeneste som abstraherer vekk alt dette bak et enkelt HTTP API.

Tjenesten er en sidecar som kjører sammen med appen din og er kun tilgjengelig i kjøretid på Nais. APIet har tre endepunkt som tilgjengeliggjøres som miljøvariabler:

  • NAIS_TOKEN_ENDPOINT lar deg hente et maskin-til-maskin token
  • NAIS_TOKEN_EXCHANGE_ENDPOINT lar deg bytte inn et token med sluttbrukerkontekst mot et nytt on-behalf-of-token
  • NAIS_TOKEN_INTROSPECTION_ENDPOINT validerer et token og returnerer tilhørende claims som JSON

Kodeeksemplene under illustrerer enkel bruk av APIet via curl.

curl $NAIS_TOKEN_ENDPOINT \
  -X POST \
  -d 'target=api://<cluster>.<namespace>.<app>/.default' \
  -d 'identity_provider=azuread'

{
    "access_token": "eyJra...",
    "expires_in": 3599,
    "token_type": "Bearer"
}
curl $NAIS_TOKEN_INTROPECTION_ENDPOINT \
  -X POST \
  -d 'token=eyJra...'

{
    "active": true,
    "aud": "client-id",
    "exp": 1732193127,
    "iat": 1732189527,
    ...
}
curl $NAIS_TOKEN_EXCHANGE_ENDPOINT \
  -X POST \
  -d 'target=<cluster>:<namespace>:<application>' \
  -d 'identity_provider=tokenx' \
  -d 'user_token=eyJra...'

{
    "access_token": "eyJra...",
    "expires_in": 3599,
    "token_type": "Bearer"
}

Fordeler med Texas:

  • Agnostisk til programmeringsspråk og rammeverk (gitt at det kan snakke HTTP)
  • Innebygget best practices — caching av tokens og validering av det viktigste
  • Ingen kodeavhengigheter — du slipper å dra inn ekstern kode som må gjennomgås og vedlikeholdes. Dette reduserer antall potensielle kilder til sårbarheter.
  • Du slipper å forholde deg til hemmeligheter i applikasjonskoden

Texas er foreløpig i beta for et utvalg identity providere. Yihaa!

Les mer og kom-i-gang i dokumentasjonen