Confidential applications
Confidential applications can hold credentials in a secure way without exposing them to unauthorized parties. They require a trusted backend server to store the secret(s).Grant types
Confidential applications use a trusted backend server and can use grant types that require specifying their Client ID and (or alternative registered credentials) for authentication when calling the Auth0 Authentication API Get Token endpoint. Confidential applications can use Client Secret Post, Client Secret Basic, or Private Key JWT authentication methods. These are considered confidential applications:- A web application with a secure backend that uses the Authorization Code Flow, Resource Owner Password Flow, or Password Flow with realm support
- A machine-to-machine (M2M) application that uses the Client Credentials Flow
ID tokens
Because confidential applications are capable of holding secrets, you can have issued to them that have signed in one of two ways:-
Symmetrically, using their client secret (
HS256) -
Asymmetrically, using a private key (
RS256)
Public applications
Public applications cannot hold credentials securely.Grant types
Public applications can only use grant types that do not require the use of their client secret. They can’t send a client secret because they can’t maintain the confidentiality of the credentials required. These are public applications:- A native desktop or mobile application that uses the Authorization Code Flow with PKCE
- A JavaScript-based client-side web application (such as a single-page app) that uses the Implicit Flow grant
ID tokens
Because public applications are unable to hold secrets, ID tokens issued to them must be:- Signed asymmetrically using a private key (
RS256) - Verified using the public key corresponding to the private key used to sign the token
How Auth0 determines credential security
Auth0 determines if an application is confidential or public based on the application type and, if available, the application’s Authentication Method setting, which defines how the application authenticates against the Auth0 Authentication API Get Token endpoint:- Regular web apps and machine-to-machine apps are confidential unless you configure them to have no authentication method.
- Single-page apps and native apps are public. These application types cannot maintain the confidentiality of the credentials required for authentication methods, so the Auth0 Dashboard does not include authentication method or credentials settings for these application types.
Check and manage the authentication method
You can check whether an application is registered with Auth0 as a confidential or public application in the Auth0 Dashboard. From Applications > Applications, select the name of the application to view.- If the Credentials tab is not available, the application is a public application.
- If the Credentials tab is available, the application is a confidential application.

- None: Public application without a .
- Client Secret Post: Application using POST request body parameters to send a client secret.
- Client Secret Basic: Application using the HTTP BASIC authentication scheme to send a client secret.
- Private Key : Application using asymmetric authentication.