Validere tokens
Grovkornet validering av JWT-tokens kan gjøres med introspect-endepunktet i Texas
Texas validerer kun JWT'ens gyldighet opp mot relevant identity provider. Du må fremdeles utføre relevant validering for
din applikasjon i egen applikasjoskode, f.eks validering av claims som scope, aud, consumer, supplier, client,
groups, med mer.
Nødvendig oppsett
For å få Texas som sidecar må du spesifisere "texas" som tilgjengelig sidecar-tjeneste
for din Skiperator-applikasjon. I tillegg må Texas ha nødvendig konfigurasjon og nettverksåpning for å nå den aktuelle
identity provideren. Dette gjøres med en SecurityConfig-ressurs.
Du bør kun aktivere validering for de(n) identity provideren(e) som er relevant for din applikasjon. Texas sidecar'en er avhengig av å hente JWKS-endepunkter for de identity providerene som er aktivert ved oppstart. Dersom du aktiverer validering for en identity provider som ikke er relevant for din applikasjon, introduserer du altså en unødvendig avhengighet og risiko for at Texas sidecar'en ikke starter opp ved nedetid hos den aktuelle identity provideren.
Du finner API-spesifikasjon inkludert detaljerte feltbeskrivelser for SecurityConfig-ressursen i API-dokumentasjonen.
Tokenx
apiVersion: security.skip.kartverket.no/v1alpha1
kind: SecurityConfig
spec:
applicationRef: my-app
tokenx:
enabled: true
...
Dette vil opprette ServiceEntry som tillater trafikk mot TokenX-tjenesten på SKIP, samt konfigurere Texas sidecar'en
til å støtte validering av TokenX-tokens.
Maskinporten
apiVersion: security.skip.kartverket.no/v1alpha1
kind: SecurityConfig
spec:
applicationRef: my-app
maskinporten:
enabled: true
...
Dette vil opprette ServiceEntry som tillater trafikk mot Maskinporten, samt konfigurere Texas sidecar'en til å støtte
validering av Maskinporten-tokens.
Entra ID
apiVersion: security.skip.kartverket.no/v1alpha1
kind: SecurityConfig
spec:
applicationRef: my-app
entraid:
enabled: true
...
Dette vil opprette ServiceEntry som tillater trafikk mot Entra ID, samt konfigurere Texas sidecar'en til å støtte
validering av Entra ID-tokens.
ID-porten
apiVersion: security.skip.kartverket.no/v1alpha1
kind: SecurityConfig
spec:
applicationRef: my-app
idporten:
enabled: true
allowedAudience:
<enten value eller valueFrom>
...
Dette vil opprette ServiceEntry som tillater trafikk mot ID-porten, samt konfigurere Texas sidecar'en til å støtte
validering av ID-porten-tokens. Validering av ID-porten-tokens krever audience-restriksjon, og dette må spesifiseres
enten direkte i value-feltet, eller ved å referere til en eksisterende ConfigMap eller Secret med
valueFrom-feltet.
Du kan lese mer om audience-restriksjon i ID-porten-dokumentasjonen.
Ansattporten
apiVersion: security.skip.kartverket.no/v1alpha1
kind: SecurityConfig
spec:
applicationRef: my-app
ansattporten:
enabled: true
allowedAudience:
<enten value eller valueFrom>
...
Dette vil opprette ServiceEntry som tillater trafikk mot Ansattporten, samt konfigurere Texas sidecar'en til å støtte
validering av Ansattporten-tokens. Validering av Ansattporten-tokens krever audience-restriksjon, og dette må
spesifiseres enten direkte i value-feltet, eller ved å referere til en eksisterende ConfigMap eller Secret med
valueFrom-feltet.
Du kan lese mer om audience-restriksjon i ID-porten-dokumentasjonen (Ansattporten fungerer på samme måte som ID-porten her, men har ingen egen dokumentasjon).
Request
POST <TEXAS_URL>/api/v1/introspect
Content-Type: application/json
Body:
{
"identity_provider": "<identity provider, f.eks entra_id>",
"token": "<access-token>"
}
Gyldige verdier for identity_provider-feltet er: entra_id, tokenx, maskinporten, idporten og ansattporten.
Respons
Responsen vil være på json-format. Dersom tokenet ikke er gyldig vil active-feltet i responsen være false, og
error-feltet vil inneholde en tekstbeskrivelse av feilen. Eksempel:
{
"active": false,
"error": "Token is expired"
}
Dersom tokenet er gyldig vil active-feltet i responsen være true, og responsen vil inneholde alle relevante claims
i tokenet. Eksempel:
{
"active": true,
"aud": ...,
"client": ...,
"iat": ...,
"exp": ...,
...
}