RFC 7591 dynamic client registration — POST /oauth/register.
This is the endpoint Claude Desktop and Claude Code use when you paste an MCP URL: they register themselves, then run the authorization-code flow. Authentik has never supported it, which is why this facade exists.
Disabled unless dcr: [enabled: true], and when disabled the metadata document
omits registration_endpoint so a client never tries.
What keeps an open registration endpoint safe
- Every
redirect_uriis validated (https, or loopback http; no fragment, no userinfo, no wildcard) and, withallowed_redirect_hosts, matched on a label boundary — sohttps://evil-claude.ai/cbcannot register itself as a claude.ai callback - Consent is mandatory for a registered client before any code is issued, so a registration on its own grants nothing
- The rate-limit hook fires here (
:register), because an unlimited registration endpoint is a free row-writer initial_access_token:closes it entirely to callers without a tokencache-control: no-store— the response contains a client secret
RFC 7592 client management (a registration_access_token and the CRUD that
goes with it) is deliberately out of scope: nothing in the MCP client
ecosystem uses it, and it is more credential to leak.