OpenID委派如何在依赖方上工作?最近的规格有变化吗?

考虑这种情况.
我有自己的网站,我用作我的标识符,但我使用第三方OpenID提供商(在我的情况下是雅虎),如 here所述,登录依赖方(RP)网站,如stackoverflow和sourceforge.

这似乎是明智之举:

>我没有被OpenID提供商锁定,因为如果/当雅虎不再提供服务,或者将开始收取服务,或者我将不再信任他们,我可以无痛地切换提供商
>我没有在我的服务器上安装和维护OpenID提供程序的经济,管理和安全负担

RP如何运作?我的理解是它应该使用我提供的标识符,并仅使用提供程序(yahoo)进行身份验证(而不是用于标识).那是对的吗?最近发生了什么变化?
为了清楚起见,我的意思是我的身份应该是

http://www.mysite.com/myPreferredUrl

并不是

https://me.yahoo.com/myYahooId(这是我的网站“重定向”上述网站中描述的身份验证的地方)

边注

我也问这个问题,因为现在似乎有些事情被打破了(几个月前它们还可以).如果我尝试登录stackoverflow,我会写mysite.com网址,我正确地“重定向”到我登录的雅虎网站,它会问我是否要“继续使用stackoverflow”,我说是的,它“重定向”,在stackoverflow网站上,我看到“这是我们以前从未见过的OpenID”,它显示了我的雅虎ID,我实际上已经被锁定了!

这是一个错误,还是我错过了什么?

PS:如果你想知道我是怎么写这个问题的,那是因为在我使用的众多机器之一上,浏览器仍然有一个有效的cookie ….

编辑:Andrew Arnott在下面的回答提出了一种解决我的问题的方法(即切换到另一个提供商).但我仍然对一些细节感兴趣:从OpenID 1.1到2.0的变化是什么,关于授权?为什么在规范中选择让提供商“打破”授权?你解释的越多,接受答案的机会就越大.

解决方法

我相信安德鲁的答案非常准确.我可以添加的唯一内容是关于v2.0规范如何以它的方式结束,允许提供者选择不使用委托.我认为其中一个激励因素是服务器导向的身份选择,其中用户只提供“yahoo.com”(或点击Yahoo按钮),然后他们选择的ID在id_res响应中从服务器返回.这也允许服务器执行诸如提供要发送的ID(如Yahoo所做)或向每个RP发送唯一标识符(如Google所做的).

它还意味着所有必要的信息都在id_res响应中,这意味着RP不需要从其checkid请求中存储状态以处理响应.实际上,提供者可以直接向RP发送id_res响应,而RP根本不会使用checkid请求启动它.

当代表团晚上发生时,v1.x提供商完全没有意识到.这种设计阻止了提供商甚至选择不支持委派,但也使一些UI问题;当您实际使用您委托的“joesmith.org”ID时,它会询问您是否要提供“joe.coolprovider.com”ID.

所以,有权衡.授权仍然是可能的,所以希望真正想要授权的用户(让我们面对它,将会被这些大型网站的用户数量相形见绌)可以选择提供所需功能的提供商. (换句话说,让市场对抗它.)

相关文章

迭代器模式(Iterator)迭代器模式(Iterator)[Cursor]意图...
高性能IO模型浅析服务器端编程经常需要构造高性能的IO模型,...
策略模式(Strategy)策略模式(Strategy)[Policy]意图:定...
访问者模式(Visitor)访问者模式(Visitor)意图:表示一个...
命令模式(Command)命令模式(Command)[Action/Transactio...
生成器模式(Builder)生成器模式(Builder)意图:将一个对...