/authorize
endpoint.
To learn more about confidential applications versus public applications, read Confidential and Public Applications.
Application authentication methods
To get tokens from Auth0, your application must authenticate through the Authentication API. Auth0 supports the following ways your application can authenticate:- : A symmetrical authentication method. In Client Secret authentication, you use the Client Secret Auth0 generated when you created the application.
- Private Key : An asymmetric authentication method. In Private Key JWT, you generate a pair of keys, public and private, to use as credentials. You provide the public key and securely store the private key in your own systems without sharing it with Auth0.
- mTLS for : An asymmetric authentication method. In mTLS for OAuth, you register a standard X.509 client certificate with Auth0. Then, you use the corresponding private key to securely establish the mTLS tunnel to send requests to your Auth0 tenant endpoints.
Client Secret authentication
Client Secret authentication is a symmetric authentication method included in the OAuth 2.0 specification. Client Secret authentication is the default authentication method in Auth0. This authentication method is supported by all existing applications and tooling. The Client Secret is a high-entropy value generated by Auth0 when you create an application and is known by both your application and Auth0. Your application authenticates by including the Client Secret in the request to the authorization server. Some security risks are associated with using Client Secret as a credential, especially for scenarios with higher security demands:- The secret used by the application is shared with Auth0.
- The secret is sent over the network and could be intercepted in the case of man-in-the-middle attacks.
To improve your security posture, we recommend using the Private Key JWT authentication method.
Private Key JWT authentication
Private Key JWT is available for customers on the Enterprise plan. To upgrade, contact Auth0 pricing.
-
Configure public and private keys:
- Generate a key pair (one public key and one private key).
- Register the private key with the application making the authentication request and register the public key with the identity provider (IdP).
-
Build an assertions for requests to the authorization server:
- Create a new assertion with specified claims in JWT format and sign it with the private key. Include this assertion as part of the request to the IdP.
- IdP validates the assertion using the public key.
- The private key is not transmitted over the network and reduces the exposure risk of your application’s credentials. like Auth0 have no knowledge of the private key, and only applications that have access to the private key can create authentication requests.
- The signed assertions have a short expiry time, limiting the window of opportunity for replay attacks.
mTLS for OAuth
To use Highly Regulated Identity features, you must have an Enterprise Plan with the Highly Regulated Identity add-on. Refer to Auth0 Pricing for details.
You can set up mTLS endpoint aliases to use a specific subdomain for mTLS for OAuth.
mTLS also supports Sender Constraining or Token Binding to protect access tokens from attackers. To learn more, read Configure Sender Constraining. Token Binding does not require previously registered application credentials such as a client certificate for use with mTLS.
JWT-Secured Authorization Request (JAR)
To use Highly Regulated Identity features, you must have an Enterprise Plan with the Highly Regulated Identity add-on. Refer to Auth0 Pricing for details.
Key and certificate registration
You should generate a separate key pair for each type of credential usage. For example, do not reuse the same key pairs for both JAR and Private Key JWT Authentication.