Fra Nav · Bygd for gjenbruk
token-support
Én annotasjon mellom internett og API-et ditt.
Et Java- og Kotlin-bibliotek som står i døra til endepunktene dine og sjekker OAuth 2.0- og OpenID Connect-tokens. Du peker det på tilbyderen i konfigurasjonen, setter én annotasjon over metoden — så slipper koden din å bry seg om signaturer, utstedere og utløpstider. I drift i Nav, klar for enhver JVM-app.
@RestController
class SakController(val sak: SakService) {
@Protected(issuer = "borger")
@GetMapping("/api/saker")
fun mineSaker() =
sak.forInnloggetBruker()
}borger når forespørselen aldri metoden. Ingen if-setninger, ingen egen signatursjekk.Hva den gjør
token-support validerer tokens fra hvilken som helst OIDC-tilbyder — du bestemmer hvem du stoler på i konfigurasjonen. Biblioteket henter tilbyderens metadata, verifiserer signatur og utløp, og sjekker at token er utstedt til nettopp din applikasjon.
Du navngir tilbyderne du stoler på …
no.nav.security.jwt.issuer.borger
.discoveryurl: https://tilbyder/.well-known/openid-configuration
.accepted_audience: min-appEtt navn per tilbyder — borger, ansatt, hva du vil. Navnet er det samme du oppgir i @Protected(issuer = "borger").
- Standard OIDC, ingen lås. Bygget på Nimbus OAuth 2.0 SDK. Peker du på en gyldig
.well-known-adresse, fungerer det — ID-porten, Entra ID, Keycloak eller din egen. - Krav ned på claim-nivå.
@ProtectedWithClaims(issuer = "ansatt", claimMap = {"acr=Level4"})når det ikke holder å bare være innlogget. - Åpne dører merkes.
@Unprotectedgjør det tydelig — og bevisst — hvilke endepunkter som slipper alle inn. - Ut like enkelt som inn.
token-client-modulene henter tokens til videre kall medclient_credentials,jwt_bearerellertoken_exchange.
Modulene
Biblioteket er delt i små moduler så du bare drar inn det rammeverket ditt bruker. Alle deler samme kjerne og samme konfigurasjon under no.nav.security.jwt.
Valider innkommende tokens
Dørvakten — sjekker tokenet før forespørselen når koden din.
- token-validation-core
- Kjernen. Validerer JWT-tokens med Nimbus OAuth 2.0 SDK og OpenID Connect-utvidelsene. Rammeverksuavhengig.
- token-validation-spring
- Spring Boot / Spring Web-innpakning. Gir deg @EnableJwtTokenValidation og annotasjonene @Protected, @ProtectedWithClaims og @Unprotected.
- token-validation-ktor
- Ktor-innpakning for Kotlin. tokenValidationSupport() og RequiredClaims i din egen route-konfigurasjon.
- token-validation-jaxrs
- JAX-RS / Jersey-innpakning rundt kjernen og token-validation-filter, med de samme annotasjonene.
- token-validation-filter
- Enkelt servlet-filter som validerer tokens med kjernekomponentene — for det som ikke bruker et av rammeverkene over.
Hent tokens til utgående kall
Når appen din selv må vise legitimasjon videre til en annen tjeneste.
- token-client-core
- OAuth 2.0-klient. Henter tokens med grantene jwt_bearer, client_credentials og token_exchange.
- token-client-spring
- Spring Boot-innpakning rundt token-client-core. Slår på klienten med @EnableOAuth2Client.
Hent den inn
Alle modulene ligger på Maven Central under gruppen no.nav.security. Legg til den du trenger — her er token-validation-spring — og sett en versjon fra siste utgivelse.
implementation("no.nav.security:token-validation-spring:$tokenSupportVersion")<dependency>
<groupId>no.nav.security</groupId>
<artifactId>token-validation-spring</artifactId>
<version>${token-support.version}</version>
</dependency>Bytt token-validation-spring mot modulen som passer rammeverket ditt — -ktor, -jaxrs, -filter eller token-client-*. Samme gruppe, samme versjon.
Fri gjenbruk
Bruk den rett fra Maven Central
token-support er MIT-lisensiert og publisert offentlig — hvem som helst kan legge den inn i sitt eget bygg, ingen avtale nødvendig. Vi lover ingen support-SLA, men biblioteket driftes i Nav hver dag, og issues og pull requests er velkomne.
Klar for enhver JVM-app, i og utenfor offentlig sektor