AuthenticationRequestMode.Immediate和AuthenticationStatus.SetupRequired

时间:2011-09-09 21:07:41

标签: openid dotnetopenauth

我正在使用DotNetOpenAuth建立一个依赖方。到目前为止,一切都变得相当顺利,但我有点困在一件事上;在从存储的声明标识符执行立即检查后,我不太确定如何处理AuthenticationStatus.SetupRequired情况。

我将访问者声称的标识符存储在cookie中,如果他们返回给我未经身份验证,但是使用此cookie,我会立即执行身份验证请求(因为我认为这是我应该做的)检查OP对来自访问者的这个标识符的看法。

似乎回复请求中返回的所有内容都是State = SetupRequired ...这是否意味着OP正在说“你很高兴...继续前进并做你需要做的事情保持这个claim_identifier“?或者在发生这种情况时我应该做些别的事情吗?

此外,当我立即向雅虎提出请求时,似乎就会发生这种情况,但是当我向Google提出同样的请求时却不会这样。

是什么给出了?

谢谢, 安德鲁

1 个答案:

答案 0 :(得分:3)

当您发送“立即”请求时,您询问OP是否愿意并且能够说某个用户仍然登录到OP。并非所有OP都支持此请求。那些不支持它的人,以及那些支持它但不能肯定地回复的人(因为用户没有登录)会将setup_required返回给RP。

在RP中,将SetupRequired作为响应意味着“我不是说用户是否已登录 - 您必须尝试使用​​checkid_setup再次进行身份验证”(这意味着不使用立即模式再次尝试。)

立即模式和“设置”模式之间的关键区别在于,在立即模式下,OP根本不应向用户呈现任何UI - 整个过程应该看起来像是重定向到用户。在设置模式(即常规模式)下,允许OP显示登录UI和/或“你确定要登录[RP]吗?”提示。如果OP需要显示此UI而不能,因为它是立即模式,那么它唯一可以响应的是setup_required。

相关问题