Fra Nav · Bygd for gjenbruk
mock-oauth2-server
En OAuth2-server som aldri sier nei.
En skriptbar OAuth2- og OpenID Connect-server for JVM-tester og Docker Compose. Den utsteder signerte JWT-er der du bestemmer innholdet, verifiserbare gjennom vanlige JWKS- og discovery-endepunkter — så du kan teste innlogging uten en ekte identitetsleverandør, offline og i CI.
# be om et token — velg selv grant og scope
$ curl -s http://localhost:8080/default/token \
-d grant_type=client_credentials \
-d scope=my-api200 OK application/json
"access_token": "eyJraWQiOiJkZWZhdWx0...", // ← signert JWT
"token_type": "Bearer",
"expires_in": 3600Du bestemmer innholdet i payloaden
"iss": "http://localhost:8080/default",
"sub": "user123", "aud": "my-api",
"roles": ["admin"] Hvorfor den finnes
Applikasjoner som er avhengige av OAuth2 er vonde å teste: den ekte identitetsleverandøren er treg, delt og utenfor din kontroll. mock-oauth2-server lar deg teste med sikkerheten påslått — uten å skru av noe og uten spesialoppsett i testene.
Ekte signaturer
Serveren utsteder signerte JWT-er som verifiseres gjennom standard JWKS og OpenID Connect-discovery. Appen din trenger ingen egen testkonfigurasjon — den peker bare på et annet .well-known.
Ingen IdP i CI
Kjør den innebygd i JVM-testene eller som en frittstående prosess i Docker Compose. Alt går offline, uten nett og uten en ekte identitetsleverandør å vente på.
Multi-issuer gratis
Det første leddet i URL-en avgjør hvilken issuer du snakker med — helt uten oppsett. Hver issuer får sin egen discovery, sitt token-endepunkt og sin JWKS.
Flytene den snakker
Alle de store OAuth2-flytene er dekket, og tokenene er verifiserbare gjennom OpenID Connect Discovery og OAuth2 Authorization Server Metadata.
- OpenID Connect Authorization Code Flow
- OAuth2 Client Credentials Grant
- OAuth2 JWT Bearer Grant (On-Behalf-Of)
- OAuth2 Token Exchange Grant
- OAuth2 Refresh Token Grant
- OAuth2 Resource Owner Password Credentials Grant
Kom i gang
To måter å kjøre den på: innebygd i JVM-testene, eller som en frittstående container ved siden av appen din. Kodebitene under er hentet rett fra README-en.
I JVM-testene
testImplementation("no.nav.security:mock-oauth2-server:$mockOAuth2ServerVersion")val server = MockOAuth2Server()
server.start()
val token = server.issueToken(
issuerId = "default",
subject = "user123",
audience = "my-api",
)
val wellKnownUrl = server.wellKnownUrl("default").toString()
server.shutdown()Som frittstående / Docker
docker run -p 8080:8080 \
ghcr.io/navikt/mock-oauth2-server:$MOCK_OAUTH2_SERVER_VERSION- Token
- http://localhost:8080/default/token
- Discovery
- http://localhost:8080/default/.well-known/openid-configuration
- JWKS
- http://localhost:8080/default/jwks
- Helse
- GET /isalive → 200 når serveren er klar
Ta den i bruk
Du finner den i testoppsettet til blant andre Elasticsearch, Apache Kafka og Sigstore — og hos Statens vegvesen og britiske Ministry of Justice.
MIT-lisensiert og fritt å bruke — i Nav og langt utenfor. Vi lover ingen support-SLA, men issues og pull requests er velkomne.
Kun for test. Serveren er laget for tester og lokal utvikling — den skal aldri kjøres i produksjon.