Your application can use the Access Token to call an API to access information about the user.When you visit businesses, venues and events in NSW, you may need to check in and show proof of your COVID-19 vaccination.
Your Auth0 Authorization Server responds with an ID Token and Access Token (and optionally, a Refresh Token). Your Auth0 Authorization Server verifies the code_challenge and code_verifier. Your Auth0 Authorization Server stores the code_challenge and redirects the user back to the application with an authorization code, which is good for one use.Īuth0's SDK sends this code and the code_verifier (created in step 2) to the Auth0 Authorization Server ( /oauth/token endpoint). The user authenticates using one of the configured login options and may see a consent page listing the permissions Auth0 will give to the application. Your Auth0 Authorization Server redirects the user to the login and authorization prompt. The user clicks Login within the application.Īuth0's SDK creates a cryptographically-random code_verifier and from this generates a code_challenge.Īuth0's SDK redirects the user to the Auth0 Authorization Server ( /authorize endpoint) along with the code_challenge. This way, a malicious attacker can only intercept the Authorization Code, and they cannot exchange it for a token without the Code Verifier.īecause the PKCE-enhanced Authorization Code Flow builds upon the standard Authorization Code Flow, the steps are very similar. Additionally, the calling app creates a transform value of the Code Verifier called the Code Challenge and sends this value over HTTPS to retrieve an Authorization Code. The PKCE-enhanced Authorization Code Flow introduces a secret created by the calling application that can be verified by the authorization server this secret is called the Code Verifier. Given these situations, OAuth 2.0 provides a version of the Authorization Code Flow which makes use of a Proof Key for Code Exchange (PKCE) (defined in OAuth 2.). May make use of a custom URL scheme to capture redirects (e.g., MyApp://) potentially allowing malicious applications to receive an Authorization Code from your Authorization Server.Ĭannot securely store a Client Secret because their entire source is available to the browser. Decompiling the app will reveal the Client Secret, which is bound to the app and is the same for all users and devices. This is because:Ĭannot securely store a Client Secret. When public clients (e.g., native and single-page applications) request Access Tokens, some additional security concerns are posed that are not mitigated by the Authorization Code Flow alone.