Mock an OpenID Connect discovery document

A GET mock at /.well-known/openid-configuration with issuer, authorization_endpoint, token_endpoint, and jwks_uri.

OpenID Connect clients bootstrap by fetching a discovery document from /.well-known/openid-configuration and reading the endpoints out of it. This template serves that document, so you can test the discovery step — and your client's handling of it — without standing up an identity provider.

Stands in for a third-party API endpoint.

Response payload

{"issuer":"{{mock.url}}","authorization_endpoint":"{{mock.url}}/authorize","token_endpoint":"{{mock.url}}/token","jwks_uri":"{{mock.url}}/.well-known/jwks.json","response_types_supported":["code"],"subject_types_supported":["public"],"id_token_signing_alg_values_supported":["RS256"]}

Fields worth knowing

Field What it means
issuer The issuer URL clients compare against a token's iss claim; it must exactly match the base URL.
authorization_endpoint Where a client sends the user to log in.
token_endpoint Where a client exchanges a code for tokens.
jwks_uri Where a client fetches the public keys — pairs with the jwks-endpoint template.

Create the mock

curl -X POST https://quickmock.dev/api/mocks \
  -H 'Content-Type: application/json' \
  -d '{
  "method": "GET",
  "response_status": 200,
  "content_type": "application/json",
  "path_suffix": ".well-known/openid-configuration",
  "response_body": "{\"issuer\":\"{{mock.url}}\",\"authorization_endpoint\":\"{{mock.url}}/authorize\",\"token_endpoint\":\"{{mock.url}}/token\",\"jwks_uri\":\"{{mock.url}}/.well-known/jwks.json\",\"response_types_supported\":[\"code\"],\"subject_types_supported\":[\"public\"],\"id_token_signing_alg_values_supported\":[\"RS256\"]}"
}'

Call it

curl https://quickmock.dev/m/<slug>/.well-known/openid-configuration

What you get

GET /m/<slug>/.well-known/openid-configuration -> 200 an OIDC discovery document
every advertised endpoint resolves to this mock via the {{mock.url}} token

How this differs from the real thing

Every URL in this document is built from the {{mock.url}} token, so it resolves to this mock's own address on every request — but nothing behind those endpoints is implemented, so a client can complete discovery and no further step. Editing the response body needs the admin token from the create banner; see /guide/manage-mocks-from-any-device for how that works.

Sources

FAQ

Do I need to edit anything before using it?
No. Every URL in the document is written as the {{mock.url}} token, which expands to this mock's own https://quickmock.dev/m/<slug> address on each request — so the document is self-consistent the moment you create it. You only need to edit it if you want the endpoints to point somewhere else.
Why does the issuer have to match exactly?
Clients compare the issuer in this document against the iss claim of the tokens they receive, and reject a mismatch. A trailing slash is enough to break it, which makes this a useful thing to test deliberately.
Can I complete a real login flow against it?
No. The document advertises endpoints, but nothing implements them. Pair it with the OAuth2 token template for the token step and the JWKS template for key discovery to cover more of the flow.

Ready to use it?

Open it in the mock builder to tweak first

Pairs well with this guide: Mock a REST API endpoint

Related templates

← All templates

Last updated: 2026-10-17