「应用安全」OAuth和OpenID Connect的全面比较(43)

RFC 7636的整个流程在Authlete的网站上进行了说明:代码交换的证明密钥(RFC 7636) 。 如果您有兴趣 , 请阅读 。

10.2 服务器端实现

在授权端点的实现中 , 授权服务器必须做的是将授权请求中包含的code_challenge参数和code_challenge_method参数的值保存到数据库中 。 因此 , 实现代码中没有任何有趣的内容 。 需要注意的是 , 想要支持PKCE的授权服务器必须将code_challenge和code_challenge_method的列添加到存储授权码的数据库表中 。

Authlete的完整源代码是保密的 , 但是为了您的兴趣 , 我在这里向您展示了实际的Authlete实现 , 它验证了令牌端点处code_verifier参数的值 。

private void validatePKCE(AuthorizationCodeEntity acEntity)

{

// See RFC 7636 (Proof Key for Code Exchange) for details.

// Get the value of 'code_challenge' which was contained in

推荐阅读