Visual RFC.
ALL RFCs / RFC 6749
Read the RFC ↗
RFC 6749 / THE FRAMEWORK

Public and confidential clients

02

An app’s ability to keep credentials confidential determines its client type.

Related RFCs and changes

“Updates” changes part of an earlier RFC. “Obsoletes” replaces it. This list shows selected related documents.

DIAGRAM§ 2.1 ↗
RFC 6749 · § 2.1EXAMPLE
3 / 3
Public and confidential clientsAn app’s ability to keep credentials confidential determines its client type. Current state: Treat installed apps according to their actual capabilities..Public and confidential clientsServer-side clientAppclient_id: public identifiercannot keep shared secretprotected credential
03
Treat installed apps according to their actual capabilities.

A distributed app does not become confidential merely because it contains a string called a secret.

Protocol participantThreat or exceptionProtocol controlSimplified drawings · precise section references
WHAT CHANGED
RFC 6749 § 2.1RFC 8252 § 8.5

Native-app guidance explicitly rejects treating a shared embedded secret as proof of the app’s identity.

Read the updated RFC section ↗
KEY POINT

A client ID is not a secret.

  • Register the client before starting the flow, subject to the deployment’s registration model.
  • Confidential clients can protect credentials; public clients cannot. A client may have distributed components with different security contexts.
  • Client identifiers identify registrations and MUST NOT be used alone as authentication.
DETAILS

A secret copied into every installed app cannot establish the identity of an individual installation.

Read the RFC section ↗

Diagrams simplify the RFC. Read the linked sections for complete requirements.

Privacy
All chapters in this RFC
  1. Four roles, one delegation
  2. Public and confidential clients
  3. Two endpoints, two channels
  4. Authorization code grant
  5. Implicit grant: historical behavior
  6. Password grant: now prohibited
  7. Client credentials and extension grants
  8. Token responses and failures
  9. Refresh without another prompt
  10. Scope and protected resources
  11. Native apps and security boundaries
RFC 9700 / CHAPTERS

Chapters

For full details, tables, algorithms, and exceptions, read the original RFC.

RFC status and corrections ↗