我在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令牌,但我觉得我可以生成令牌,当他们发回代码并要求访问令牌(以及身份令牌)。
答案 0 :(得分:1)
原则上,您不需要立即生成和存储id_token
,但在很多情况下,OP需要保留有关请求的信息 - 例如请求的范围和请求的声明 - 为了生成所需的id_token
,因此立即生成令牌并将其存储为独立单元可能是有意义的。
请注意,您还需要保留client_id
和redirect_uri
才能在交换code
时检查它,并可选择nonce
}。
但确实没有必要立即按照你的建议生成id_token
。