Tenant dev

Auto-provisioned, ephemeral, synthetic. Everything below is ready to use.

Try the interactive playground — complete a real OIDC or SAML sign-in and read every message annotated.

OIDC

Discoveryhttps://id.knauth.in/dev/.well-known/openid-configuration
JWKShttps://id.knauth.in/dev/oauth/jwks
Public clientplayground-spa (PKCE required) → redirect https://app.example.test/callback
Confidential clientplayground-web (basic auth) → secret at https://id.knauth.in/dev/dev/client-secret?client_id=playground-web
Register your ownPOST https://id.knauth.in/dev/oauth/register (RFC 7591, open registration)
PARPOST https://id.knauth.in/dev/oauth/par (RFC 9126; single-use request_uri)
Machine tokensgrant_type=client_credentials (confidential clients)
DPoPSend a proof JWT in the DPoP header (RFC 9449); tokens become sender-constrained (cnf.jkt)
Request objectsrequest= JWT, alg none or RS256 against your registered jwks (RFC 9101)
Agent delegationgrant_type=urn:ietf:params:oauth:grant-type:token-exchange (RFC 8693): act chains in introspection, attenuation only, every hop audited
curl -s -X POST https://id.knauth.in/dev/oauth/register \
  -H 'content-type: application/json' \
  -d '{"redirect_uris":["https://your.app/callback"]}'

SAML 2.0

IdP metadatahttps://id.knauth.in/dev/saml/metadata
SSO endpointhttps://id.knauth.in/dev/saml/sso (Redirect + POST bindings)
Fixture SPshttps://sp.example.test/metadata (unsigned response, IdP-initiated allowed), https://signed-sp.example.test/metadata (signed response), https://signed-requests-sp.example.test/metadata (REQUIRES signed AuthnRequests; key at https://id.knauth.in/dev/dev/sp-key)

Fixture users

EmailName
jackson@example.testJackson Wright (default)
samuel@example.testSamuel Bishop

Pick a user on any flow with ?email=…; SCIM-created users join the pool at https://id.knauth.in/dev/scim/v2/Users (bearer token from https://id.knauth.in/dev/dev/scim-token).

Verifiable audit

curl -s -X POST https://id.knauth.in/dev/audit/checkpoint   # sign + anchor a Merkle checkpoint
curl -s "https://id.knauth.in/dev/audit/proof/inclusion?seq=0"   # prove a record is committed

kwiss — spec-faithful mock IdP. Everything here is synthetic and disposable: tenants auto-provision on first use, keys and credentials are runtime-minted throwaways. Tamper-evident, independently verifiable audit included. Not for production identities.