Identity Server 4 在哪里存储客户端的代码验证器

Where does Identity Server 4 stores client's code verifier

我已经使用 EF 和 Angular 客户端(OIDC JS 库)设置了 Identity Server 4,授权代码和 PKCE 授权。我看到在 /authorize url 中传递了代码质询和方法。根据规范,auth 服务器将客户端通过的代码挑战存储在 auth 服务器上,以便稍后在客户端发送代码验证程序时进行验证。 身份服务器 4 将代码质询存储在数据库中的什么位置?

这取决于它的实现方式,一种常见的方法是将它们存储在名为 PersistedGrants 的数据库 table 中。 授权码也存储在这个table中,但是一旦使用就会被删除。

图像显示了它在 table 中的样子。

Code_challenge与访问代码一起存储在数据库中,您可以看到他们将它们打包在一起的代码,然后将其作为加密的 blob 存储在数据库中。

授权码存储在数据库中,如下图所示:

实际有效载荷是加密和保护的,看起来像这样:

{
  "PersistentGrantDataContainerVersion": 1,
  "DataProtected": true,
  "Payload": "CfDJ8OFLAj3iVVVHvhgvjcKB19Z7-Hms4IIQobGgGl7VnJQCtKiB-Inr3h-mcWCxxD8dJ4QNTbuVeywbT6ROsaf13EpaIQDWtLgbnSPvCDTLQeWTO_vP0UtDwJ7TTCc5aTvKEp_9hX9S1b3l685bmBMlTIcZFqGGM2VfK0qasWCqKSQcTxeN6cgJygZEQNMgAG4ipqr..."
}