mock-oauth
Generate fake OAuth access tokens/ID tokens that your resource server can accept.
Token generation
curl -X POST https://mock-oauth.arraybrook.com/oauth/token \
--data-raw '{
"iss": "https://your-server.com",
"aud": ["your-audience-1", "your-audience-2"],
"scope": "scope1 scope2",
"gty": "password",
"email": "emaill@email.com",
"sub": "1234",
"name": "foo"
}'
and it returns {"access_token":"***","id_token":"***","expires_in":3600,"token_type":"Bearer"}%
. Tokens always has 1 hour TTL and cannot be refreshed.
Access token can includes iss
, sub
, aud
, scope
, gty
, azp
claims. All of them are optional. iss
defaults to "https://mock-oauth.arraybrook.com/"
and aud
defaults to ["com.arraybrook.mock-oauth"]
if no value is provided. Other inputs are ignored.
ID token can include the below claims: name
, given_name
, family_name
, middle_name
, nickname
, preferred_username
profile
, picture
, website
, email
, email_verified
, gender
, birthdate
, zoneinfo
, locale
, phone_number
, phone_number_verified
, address
, updated_at
, iss
, sub
, aud
(the list of standard claims defined in OpenID Connect contract). Other inputs are ignored.
Resource server integration
JSON Web Key Set (JWKS) URI is https://mock-oauth.arraybrook.com/.well-known/jwks.json
.
This example shows how to integrate mock-oauth with Spring Framework.
spring:
security:
oauth2:
resourceserver:
jwt:
issuer-uri: https://your-server.com
jwk-set-uri: https://mock-oauth.arraybrook.com/.well-known/jwks.json
jws-algorithm: RS256
audiences:
- your-audience-1
- your-audience-2
Deployment
You can simply use the version we have deployed. It is available at https://mock-oauth.arraybrook.com/
.
Or you can deploy your own mock-oauth server from our source code. Since this is a Next.js project, any hosting service that supports Next.js should work. Without setting any environment variable, it generates a new JWKS everytime it restarts. Alternatively, you can set JWK_PUBLIC_KEY
and JWK_PRIVATE_KEY
so JWKS can stay the same. Those variables can be generated by
import { exportJWK } from 'jose'; // https://www.npmjs.com/package/jose
const { publicKey, privateKey } = await generateKeyPair('RS256', {
modulusLength: 2048, // recommended key size
extractable: true,
});
console.log(JSON.stringify(await exportJWK(publicKey))) // JWK_PUBLIC_KEY
console.log(JSON.stringify(await exportJWK(privateKey))) // JWK_PRIVATE_KEY
Use cases
mock-oauth can be used for testing proposes.
mock-oauth can also be used for issueing temperarily tokens for anonymouse users.
License
MIT License. Source code at https://github.com/arraybrook/mock-oauth
.