<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>OpenID Connect Dynamic Client Registration Guide on OpenID Connect Dynamic Registration Guide</title><link>/</link><description>Recent content in OpenID Connect Dynamic Client Registration Guide on OpenID Connect Dynamic Registration Guide</description><generator>Hugo</generator><language>en-us</language><atom:link href="/index.xml" rel="self" type="application/rss+xml"/><item><title>Token Endpoint Auth Methods</title><link>/token_endpoint_auth_method/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>/token_endpoint_auth_method/</guid><description>&lt;h1 id="token-endpoint-authentication-methods"&gt;Token Endpoint Authentication Methods&lt;/h1&gt;
&lt;p&gt;The &lt;code&gt;token_endpoint_auth_method&lt;/code&gt; attribute specifies how the client authenticates when requesting tokens from the token endpoint.&lt;/p&gt;
&lt;h2 id="standard-methods"&gt;Standard Methods&lt;/h2&gt;
&lt;h3 id="client_secret_basic"&gt;&lt;code&gt;client_secret_basic&lt;/code&gt;&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;Most common method for confidential clients&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Client authenticates using HTTP Basic Authentication&lt;/li&gt;
&lt;li&gt;&lt;code&gt;client_id&lt;/code&gt; and &lt;code&gt;client_secret&lt;/code&gt; are sent in the &lt;code&gt;Authorization&lt;/code&gt; header&lt;/li&gt;
&lt;li&gt;Format: &lt;code&gt;Authorization: Basic base64(client_id:client_secret)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Widely supported and straightforward to implement&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Example:&lt;/strong&gt;&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-http" data-lang="http"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nf"&gt;POST&lt;/span&gt; &lt;span class="nn"&gt;/token&lt;/span&gt; &lt;span class="kr"&gt;HTTP&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="m"&gt;1.1&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;Host&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="l"&gt;authorization-server.com&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;Authorization&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="l"&gt;Basic czZCaGRSa3F0Mzo3RmpmcDBaQnIxS3REUmJuZlZkbUl3&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;Content-Type&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="l"&gt;application/x-www-form-urlencoded&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;grant_type=authorization_code&amp;amp;code=SplxlOBeZQQYbYS6WxSbIA
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id="client_secret_post"&gt;&lt;code&gt;client_secret_post&lt;/code&gt;&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;Client credentials in POST body&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;client_id&lt;/code&gt; and &lt;code&gt;client_secret&lt;/code&gt; sent as form parameters in request body&lt;/li&gt;
&lt;li&gt;Less secure than Basic Auth since credentials appear in request body&lt;/li&gt;
&lt;li&gt;May be logged more easily by proxies and web servers&lt;/li&gt;
&lt;li&gt;Use only when Basic Auth is not supported&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Example:&lt;/strong&gt;&lt;/p&gt;</description></item><item><title>Response Types</title><link>/response_types/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>/response_types/</guid><description>&lt;h1 id="oauth-20-response-types"&gt;OAuth 2.0 Response Types&lt;/h1&gt;
&lt;p&gt;The &lt;code&gt;response_types&lt;/code&gt; attribute specifies what the authorization endpoint returns in the authorization response after user authentication and consent.&lt;/p&gt;
&lt;h2 id="oauth-20-response-types-1"&gt;OAuth 2.0 Response Types&lt;/h2&gt;
&lt;h3 id="code"&gt;&lt;code&gt;code&lt;/code&gt;&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;Authorization Code Flow (recommended)&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Returns authorization code in redirect URI query parameters&lt;/li&gt;
&lt;li&gt;Code must be exchanged for tokens at token endpoint&lt;/li&gt;
&lt;li&gt;Most secure - tokens never exposed to browser&lt;/li&gt;
&lt;li&gt;Supports refresh tokens&lt;/li&gt;
&lt;li&gt;Works with PKCE for public clients&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Authorization Response:&lt;/strong&gt;&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;HTTP/1.1 302 Found
Location: https://client.example.com/callback?code=SplxlOBeZQQYbYS6WxSbIA&amp;amp;state=xyz
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;&lt;strong&gt;Pairs with grant type:&lt;/strong&gt; &lt;code&gt;authorization_code&lt;/code&gt;&lt;/p&gt;</description></item><item><title/><link>/grant_types/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>/grant_types/</guid><description>&lt;h1 id="oauth-20-grant-types"&gt;OAuth 2.0 Grant Types&lt;/h1&gt;
&lt;p&gt;The &lt;code&gt;grant_types&lt;/code&gt; attribute specifies which OAuth 2.0 flows (authorization grants) the client is permitted to use.&lt;/p&gt;
&lt;h2 id="standard-grant-types-rfc-6749"&gt;Standard Grant Types (RFC 6749)&lt;/h2&gt;
&lt;h3 id="authorization_code"&gt;&lt;code&gt;authorization_code&lt;/code&gt;&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;The most common and secure flow&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;User redirected to authorization server for authentication and consent&lt;/li&gt;
&lt;li&gt;Authorization server returns authorization code to client&amp;rsquo;s redirect URI&lt;/li&gt;
&lt;li&gt;Client exchanges code for tokens at token endpoint&lt;/li&gt;
&lt;li&gt;Supports refresh tokens&lt;/li&gt;
&lt;li&gt;Tokens never exposed to browser&lt;/li&gt;
&lt;li&gt;Works with PKCE for public clients&lt;/li&gt;
&lt;/ul&gt;
&lt;pre class="mermaid"&gt;sequenceDiagram
participant User
participant Client
participant AuthServer as Authorization Server
participant API as Resource Server
User-&gt;&gt;Client: 1. Click "Login"
Client-&gt;&gt;AuthServer: 2. Redirect to /authorize
Note over AuthServer: response_type=code
User-&gt;&gt;AuthServer: 3. Authenticate &amp; consent
AuthServer-&gt;&gt;Client: 4. Redirect with code
Note over Client: https://app.com/callback?code=ABC123
Client-&gt;&gt;AuthServer: 5. POST /token (exchange code)
Note over Client,AuthServer: Code + client credentials
AuthServer-&gt;&gt;Client: 6. Return tokens
Note over Client: access_token, refresh_token, id_token
Client-&gt;&gt;API: 7. Call API with access_token
Note over Client,API: Authorization: Bearer {token}
API-&gt;&gt;Client: 8. Protected resource
&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;Flow:&lt;/strong&gt;&lt;/p&gt;</description></item></channel></rss>