{% extends "base.html" %} {% block title %}{% if client %}Edit Client{% else %}Create Client{% endif %} - NanoIDP{% endblock %} {% block content %}

{% if client %}Edit OAuth Client{% else %}Create OAuth Client{% endif %}

Unique identifier for the OAuth client
A public client ("none") has no secret, must use PKCE with S256 on /authorize, cannot use the client_credentials grant, and always gets refresh token rotation.
{% if not client %} {% endif %}
{% if client %}
Leave empty to keep current secret
{% else %}
A random secret has been generated. You can change it if needed.
{% endif %}
Extra audiences added to the ID Token aud alongside the client_id. When more than one distinct audience results, aud becomes an array and an azp claim is emitted.
When set, /authorize only accepts a redirect_uri that matches one of these exactly (RFC 6749 §3.1.2.3, OAuth 2.1 §4.1.1). Leave empty to accept any syntactically valid URI (dev default).
When set, a requested scope outside this list is invalid_scope at /authorize and /token (RFC 6749 §4.1.2.1/§5.2). Leave empty to allow any scope in the global vocabulary (oauth.scopes_supported, dev default).
RFC 8707 (#187). When set, a resource requested at /authorize or /token outside this list is invalid_target. Leave empty to allow any valid resource (an absolute URI without a fragment). The access token aud is bound to the requested resource.

Login Page Branding (Optional) {% if client %} {% endif %}
Color behind the login dialog
Color for the card header band
Color for the card footer band
Horizontal places the client info and the login form side by side; it collapses back to a single column on narrow screens.
Cancel
About OAuth Clients

OAuth clients are used to authenticate applications requesting tokens from the IdP.

  • Store secrets securely
  • Use unique client IDs
  • Rotate secrets periodically
{% endblock %} {% block extra_js %} {% endblock %}