Open ID Connect Provider - Persist ID Tokens?

时间:2015-05-15 17:56:17

标签: ruby-on-rails oauth-2.0 openid-connect

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

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

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

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

1 个答案:

答案 0 :(得分:1)

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

请注意,您还需要保留client_idredirect_uri才能在交换code时检查它,并可选择nonce }。

但确实没有必要立即按照你的建议生成id_token