Denne modulen eksponerer task-API-et i prosessering over HTTP og beskytter endepunktene med Spring Security sin resource server-støtte for JWT.
Modulen passer for applikasjoner som allerede bruker Spring Security, eller som ønsker å validere Azure AD-token direkte via issuer/JWKS uten token-support-annotasjonene fra NAV-bibliotekene.
Modulen leverer:
- en ferdig
TaskControllerSpringSecuritymed endepunkter under/api/task/** - en
SecurityFilterChainsom kun gjelder for/api/task/** - JWT-validering av innkommende bearer-token
- validering av både
issuerogaudience - en ekstra tilgangssjekk mot
ProsesseringInfoProvider.harTilgang()
Det betyr at konsumenten slipper å lage egen controller eller egen sikkerhetskonfigurasjon for task-API-et, så lenge standardoppsettet i denne modulen er tilstrekkelig.
Sikkerheten settes opp i ProsesseringTaskApiSecurityConfig.
For kall til /api/task/** skjer dette:
- Spring Security leser bearer-token fra requesten.
ProsesseringJwtDecodervaliderer tokenet motAZURE_OPENID_CONFIG_ISSUER.- Samme decoder krever at
aud-claim inneholderAZURE_APP_CLIENT_ID. - Requesten må være autentisert.
ProsesseringInfoProvider.harTilgang()må returneretrue.
Hvis ett av disse stegene feiler, blir requesten avvist før controlleren kjøres.
For å bruke modulen må konsumenten fortsatt gjøre tre ting.
<dependency>
<groupId>no.nav.familie</groupId>
<artifactId>prosessering-web-spring-security</artifactId>
</dependency>Modulen forventer følgende properties:
AZURE_OPENID_CONFIG_ISSUER=<issuer-url>
AZURE_APP_CLIENT_ID=<client-id-som-skal-finnes-i-aud>AZURE_OPENID_CONFIG_ISSUER brukes for å hente OpenID-konfigurasjon/JWKS.
AZURE_APP_CLIENT_ID brukes som forventet audience. Tokenet må altså ha denne verdien i aud.
Konsumenten må selv implementere ProsesseringInfoProvider fra prosessering-core.
Denne brukes av modulen til:
- å hente brukernavn til logging
- å avgjøre om innlogget bruker faktisk har tilgang til task-API-et
Et minimumsoppsett ser slik ut:
@Bean
fun prosesseringInfoProvider() = object : ProsesseringInfoProvider {
override fun hentBrukernavn(): String = "ukjent"
override fun harTilgang(): Boolean = TODO("Sjekk claims, roller eller grupper")
}Se README-en i rotmappen for et mer konkret eksempel på hvordan claims kan leses ut.
Velg prosessering-web-spring-security når applikasjonen deres ønsker å bruke vanlig Spring Security resource server for tokenvalidering.
Hvis applikasjonen i stedet allerede bruker NAV sitt token-support-oppsett og @ProtectedWithClaims, er prosessering-web-nav-token-support ofte et mer naturlig valg.