This article is a mirror article of machine translation, please click here to jump to the original article.

View: 1|Reply: 0

Understanding the code_challenge and code_vertifier of PKCE in OIDC

[Copy link]
Posted on19 seconds ago | | | |
OAuth 2.0 offers multiple authorization modes, among which the Authorization Code Grant is the most commonly used and secure. code_challenge is a security-enhanced feature within this mode, mainly used for the PKCE (Proof Key for Code Exchange) mechanism.

What is PKCE?

PKCE (Proof Key for Code Exchange) is an extension designed to enhance the security of the OAuth 2.0 authorization code pattern, especially when used in public clients such as JavaScript applications or mobile apps running in browsers. PKCE prevents authorization codes from being intercepted and misused by adding an additional authentication step to authorization requests.

code_challenge Role

code_challenge is part of the PKCE mechanism, generated and sent during the authorization request phase. It is based on a secret value (called code_verifier), transformed by a hashing algorithm such as S256. The purpose of code_challenge is to provide a validation basis for subsequent token requests without directly exposing the code_verifier.

Generation and use of code_challenge and code_verifier

Generation code_verifier:
code_verifier is a high-entropy, randomly generated string,Character length (between 43 and 128). The default value is 43。

Generation code_challenge:
Using code_verifier, code_challenge is generated through a hashing algorithm (such as S256). For S256, code_challenge is the Base64 URL encoding of the code_verifier SHA-256 hash value, but the = padding character from the encoding must be removed, and the output length must be 43 characters (since after Base64 URL encoding, every 4 characters represents 3 bytes, but the last character block may be less than 4 characters, so the length may vary slightly after removing = characters).

Use code_challenge in authorization requests:
When initiating an authorization request, code_challenge is sent as one of the request parameters to the authorization server.

Using code_verifier in token requests:
When the authorization server returns the authorization code, the client uses this code along with the previously generated code_verifier to request access to the token endpoint. The authorization server verifies whether the code_challenge and code_verifier match, ensuring the request is initiated by the original client.

PKCE generation

Online PKCE Generation Tools:The hyperlink login is visible.

The C# code is generated as follows:
As shown below:



Reference:

The hyperlink login is visible.
The hyperlink login is visible.




Previous:.NET/C# Two methods to verify the validity of the JWT token signature
Disclaimer:
All software, programming materials or articles published by Code Farmer Network are only for learning and research purposes; The above content shall not be used for commercial or illegal purposes, otherwise, users shall bear all consequences. The information on this site comes from the Internet, and copyright disputes have nothing to do with this site. You must completely delete the above content from your computer within 24 hours of downloading. If you like the program, please support genuine software, purchase registration, and get better genuine services. If there is any infringement, please contact us by email.

Mail To:help@itsvse.com