Open ID Connect 提供商 - 保留 ID 令牌?

Open ID Connect Provider - Persist ID Tokens?

我正在 Rails 中编写一个 Open ID Connect Provider,基本上重构了这个示例 Here

我的问题是 - ID 令牌是否需要保留在服务器上?如果我只是签署 ID Token 并将其发送给 RP,我是否可以在 RP 要求时生成 ID Token(例如在请求中使用 idtoken 响应类型)而不用担心将其保存在我这边的数据库?基本上对 IDToken 使用普通的旧 ruby 对象而不是 ActiveModel 对象。

在我看来,一旦 RP 收到 ID 令牌,他们就会使用它来获取有关资源所有者的信息,并且不会像访问令牌一样将其发回给提供者。还是我在这里遗漏了什么,我应该将 ID 令牌保存在提供商的数据库中?

我知道 Nat Sakimura 解释 here 在 OAuth / OIDC 的 code 流程中,您应该在将授权代码传回 RP 时保存 ID 令牌,但我觉得我可以只需在他们发回代码并请求访问令牌(连同 ID 令牌)时生成令牌即可。

原则上您不需要立即生成和存储 id_token 但在很多情况下 OP 需要保留有关请求的信息 - 例如请求的范围和请求的声明 - 为了生成所需的 id_token 因此立即生成令牌并将其存储为独立单元可能是有意义的。

请注意,您还需要保留 client_idredirect_uri 以便在交换 code 时能够检查它,并且可以选择 nonce.

但确实没有必要像您建议的那样立即生成 id_token