Proof Key of Code Exchange (PKCE)
PKCE (RFC 7636) enhances the security of the OAuth 2.0 Authorization Code Flow by protecting against authorization code interception attacks. It is particularly important for public clients (e.g., mobile apps, single-page apps) that cannot securely store a client secret.
PKCE Flow in Corppass
Corppass supports PKCE as part of the Authorization Code Flow, requiring the client to send a code challenge during the authorization request and later verify it with a code verifier when exchanging the authorization code for tokens.
How PKCE Works
Step 1: Client Generates a Code Verifier
The client generates a high-entropy random string between 43–128 characters for each authentication request.
Example:
6I9tQd5tKn7Uy9ZfwEqd-YC71gSVfzcfVcyXLc34vQo
Step 2: Client Derives a Code Challenge
The code verifier is hashed using SHA-256 and then Base64URL-encoded to produce the code challenge.
Example (Base64URL of SHA-256 hash):
hI0N81lR99um3jIdCEcRTu3F-ZRhz7_TnHjoICzPOJk
Step 3: Client Sends Authorization Request with Code Challenge (via PAR)
The client initiates a Pushed Authorization Request (PAR) to the /request
endpoint, including the following in the request body:
POST /request
response_type=code
client_id=abc123
....
code_challenge=hI0N81lR99um3jIdCEcRTu3F-ZRhz7_TnHjoICzPOJk
code_challenge_method=S256
Step 4: Redirect User to Authorization Endpoint with request_uri
request_uri
After receiving the request_uri
from /request
, the client must redirect the user to the /authorize
endpoint, passing both client_id
and request_uri
as query parameters.
Example:
/mga/sps/oauth/oauth20/authorize?...&client_id=abc123&request_uri=urn:ietf:params:oauth:request_uri:h8YQPVV0Dgm5MGaD_koAm
Step 5: Authorization Server Responds
Corppass responds with an authorization code upon successful user authentication.
Step 6: Client Sends Token Request with Code Verifier
The client exchanges the authorization code for an ID token and access token, providing the original code_verifier to prove it generated the code challenge.
Example:
client_id=xyz&...&code_verifier=6I9tQd5tKn7Uy9ZfwEqd-YC71gSVfzcfVcyXLc34vQo
Step 7: Authorization Server Verifies Code Verifier
Corppass recomputes the code_challenge
from the received code_verifier
and compares it to the original challenge sent in the authorization request. If they match, the token request succeeds and tokens are issued.
Last updated