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

byte[
hash = Digest.getInstanceSHA256().update(verifier).digest();

10.3 。 客户端实施

客户端应用程序必须为PKCE做些什么 。 一种是生成一个由43-128个字母组成的随机码验证器 , 使用代码验证器和代码质询方法(plain或S256)计算代码质询 , 并包括计算出的代码质询和代码质询方法作为值授权请求中的code_challenge参数和code_challenge_method参数 。 另一种是在令牌请求中包含代码验证器 。

作为客户端实现的示例 , 我将介绍以下两个 。

  1. AppAuth for Android

  2. AppAuth for iOS

它们是用于与OAuth 2.0和OpenID Connect服务器通信的SDK 。 他们声称他们包括最佳实践并支持PKCE 。

如果为code_challenge_method = S256实现计算逻辑 , 则可以通过在代码验证器的值为dBjftJeZ4CVP-mB92K27uhbUJU1p1r_wW1gFWFOEjXk时检查代码质询的值是否变为E9Melhoa2OwvFrEMTJguCHaoeK1t8URWbuGJSstw-cM来测试它 。 这些值在RFC 7636的“附录B. S256 code_challenge_method的示例”中作为示例值找到 。

推荐阅读