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_id
和 redirect_uri
以便在交换 code
时能够检查它,并且可以选择 nonce
.
但确实没有必要像您建议的那样立即生成 id_token
。
我正在 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_id
和 redirect_uri
以便在交换 code
时能够检查它,并且可以选择 nonce
.
但确实没有必要像您建议的那样立即生成 id_token
。