Openid AuthenticationRequestMode.Immediate和AuthenticationStatus.SetupRequired

Openid AuthenticationRequestMode.Immediate和AuthenticationStatus.SetupRequired,openid,dotnetopenauth,Openid,Dotnetopenauth,我正在使用DotNetOpenAuth构建一个依赖方。到目前为止,一切都很顺利,但有一件事让我有点为难;我不太确定如何处理AuthenticationStatus.SetupRequired案例,在从存储的声明标识符执行立即检查之后 我将访问者声明的标识符存储在cookie中,如果他们未经验证就返回给我,但使用此cookie,我会立即执行身份验证请求(因为我认为这是我应该做的),以检查OP对我从访问者处获得的此标识符的看法 似乎返回请求中返回的所有内容都是State=SetupRequired…

我正在使用DotNetOpenAuth构建一个依赖方。到目前为止,一切都很顺利,但有一件事让我有点为难;我不太确定如何处理AuthenticationStatus.SetupRequired案例,在从存储的声明标识符执行立即检查之后

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

似乎返回请求中返回的所有内容都是State=SetupRequired……这是否意味着OP在说“你可以继续……继续,做你需要做的事情以保持此标识符继续”呢?或者当这种情况发生时,我应该做些别的事情吗

此外,这似乎发生在我立即向雅虎提出请求时,而不是向谷歌提出同样的请求时

有什么好处

谢谢, Andrew

当您发送“立即”请求时,您是在询问OP是否愿意并且能够说某个给定用户仍然登录到OP。并非所有OP都支持此请求。那些不支持它的用户,以及那些确实支持它但无法肯定响应的用户(例如,因为用户未登录)将所需的设置返回给RP

在RP,获取SetupRequired作为响应意味着“我不是说用户是否已登录——您必须尝试使用checkid_setup再次验证”(这意味着在不使用立即模式的情况下重试)


即时模式和“设置”模式之间的关键区别在于,在即时模式下,OP根本不应该向用户呈现任何UI——整个过程应该看起来就像是对用户的重定向。在设置模式(即常规模式)下,OP可以显示登录UI和/或“是否确实要登录[RP]?”提示。如果OP需要显示此UI,但由于它是即时模式而无法显示,那么它唯一可以响应的就是需要设置。

Ahhh,好的,这是有意义的。谢谢你的回复和图书馆。