Skip to main content

Server Metadata

Server Metadata (RFC 8414 and OpenID Connect Discovery 1.0) is a standardized JSON document that lists every OAuth 2.1 and OpenID Connect endpoint, every supported algorithm, and every feature flag for a ThunderID instance. Clients fetch it once at startup (or on demand) and use it instead of hard-coding endpoint URLs.

ThunderID publishes two documents: one for OAuth and one for OIDC. The OIDC document is a strict superset of the OAuth one.

How It Works

EndpointSpec
GET /.well-known/oauth-authorization-serverRFC 8414
GET /.well-known/openid-configurationOIDC Discovery 1.0

Both endpoints are public: no authentication required.

curl https://thunderid.example.com/.well-known/openid-configuration
{
"issuer": "https://thunderid.example.com",
"authorization_endpoint": "https://thunderid.example.com/oauth2/authorize",
"token_endpoint": "https://thunderid.example.com/oauth2/token",
"userinfo_endpoint": "https://thunderid.example.com/oauth2/userinfo",
"introspection_endpoint": "https://thunderid.example.com/oauth2/introspect",
"pushed_authorization_request_endpoint": "https://thunderid.example.com/oauth2/par",
"registration_endpoint": "https://thunderid.example.com/oauth2/dcr/register",
"jwks_uri": "https://thunderid.example.com/oauth2/jwks",

"grant_types_supported": [
"authorization_code",
"client_credentials",
"refresh_token",
"urn:ietf:params:oauth:grant-type:token-exchange"
],
"response_types_supported": ["code"],
"code_challenge_methods_supported": ["S256"],
"token_endpoint_auth_methods_supported": [
"client_secret_basic",
"client_secret_post",
"private_key_jwt",
"none"
],
"dpop_signing_alg_values_supported": [
"RS256", "RS512", "PS256", "ES256", "ES384", "ES512", "EdDSA"
],

"subject_types_supported": ["public"],
"id_token_signing_alg_values_supported": [
"RS256", "RS512", "PS256", "ES256", "ES384", "ES512", "EdDSA"
],
"id_token_encryption_alg_values_supported": ["RSA-OAEP", "RSA-OAEP-256"],
"id_token_encryption_enc_values_supported": ["A128CBC-HS256", "A256GCM"],
"userinfo_signing_alg_values_supported": [
"RS256", "RS512", "PS256", "ES256", "ES384", "ES512", "EdDSA"
],
"userinfo_encryption_alg_values_supported": ["RSA-OAEP", "RSA-OAEP-256"],
"userinfo_encryption_enc_values_supported": ["A128CBC-HS256", "A256GCM"],

"scopes_supported": ["openid", "profile", "email", "phone", "address"],
"claims_supported": [
"sub", "iss", "aud", "exp", "iat", "auth_time",
"name", "given_name", "family_name", "preferred_username",
"email", "email_verified",
"phone_number", "phone_number_verified",
"address"
],
"claims_parameter_supported": true,
"require_pushed_authorization_requests": false,
"authorization_response_iss_parameter_supported": true,
"acr_values_supported": ["urn:mace:incommon:iap:silver"]
}

The OAuth-only document at /.well-known/oauth-authorization-server omits the OIDC-specific fields (subject types, ID token algorithms, claims supported).

How ThunderID Implements It
AspectBehavior
CachingThe document is generated per-instance from runtime configuration. Cache freely on the client.
issuerThe deployment's configured issuer URL. Must match the iss claim in issued tokens.
Endpoint URLsAbsolute URLs rooted at the configured issuer
Subject typespublic only. Pairwise subject identifiers are not supported
require_pushed_authorization_requestsReflects the global oauth.par.require_par setting
authorization_response_iss_parameter_supportedAlways true (see Issuer Identification)

Try It in ThunderID

No configuration is needed. The discovery endpoints are always served and reflect the current deployment's settings.

Use It from a Client

Most OAuth and OIDC SDKs accept a discovery URL and configure themselves from it:

// Generic OIDC client (pseudocode)
const config = await fetch(
'https://thunderid.example.com/.well-known/openid-configuration'
).then(r => r.json());

const client = new OIDCClient({
authorization_endpoint: config.authorization_endpoint,
token_endpoint: config.token_endpoint,
jwks_uri: config.jwks_uri,
// ...
});

Explore with AI

ThunderID LogoThunderID Logo

Product

DocsAPIsSDKs
© Copyright Linux Foundation Europe.For web site terms of use, trademark policy and other project policies please see https://linuxfoundation.eu/en/policies.