考虑这种情况。 我有自己的网站,我用作我的标识符,但我使用第三方OpenID提供商(在我的情况下是雅虎),如here所述,登录依赖方(RP)网站,如stackoverflow和sourceforge
这似乎是明智之举:
问题
RP如何运作?我的理解是它应该使用标识符 I 提供,并且仅使用提供程序(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的变化是什么,关于授权?为什么在规范中选择让提供商“打破”授权?你解释的越多,接受答案的机会就越大。答案 0 :(得分:6)
我不认为雅虎支持OpenID授权。也就是说,StackOverflow和其他RP可以在您自己的标识符上执行发现并正确设置委托身份验证请求,但雅虎可能会选择(可能与规范相反)为自己的标识符发送身份声明,而不是由RP。
规范没有从OpenID 1.1更改为2.0。这些规范并没有暗示或支持雅虎的行为,只有雅虎可以权威地评论他们的推理。
StackOverflow委派仍然有效。看来,雅虎打破了你。我建议您通过更改委派身份验证的人来利用委托给您的内容。例如,www.myopenid.com支持授权。如果您将自己的标识符更改为指向该标识符,则应该能够再次作为旧自己返回到StackOverflow。 :)
答案 1 :(得分:4)
我相信安德鲁的答案非常准确。我可以添加的唯一内容是关于v2.0规范如何以它的方式结束,允许提供者选择不使用委托。我认为其中一个激励因素是服务器导向的身份选择,其中用户只提供“yahoo.com”(或点击Yahoo按钮),然后他们选择的ID在id_res响应中从服务器返回。这也允许服务器做一些事情,比如提供选择要发送的ID(如雅虎那样)或向每个RP发送唯一标识符(如谷歌那样)。
这也意味着所有必要的信息都在id_res
响应中,这意味着RP不需要从其checkid
请求中存储状态以处理响应。实际上,提供商可以直接向RP发送id_res
响应,而RP根据checkid
请求启动它。
v1.x提供商在代表团晚上发生时完全没有意识到。这种设计阻止了提供商甚至选择不支持委派,但也使一些UI问题;当您实际使用您委托的“joesmith.org”ID时,它会询问您是否要提供“joe.coolprovider.com”ID。
所以,有权衡。授权仍然是可能的,所以希望真正想要授权的用户(让我们面对它,将会被这些大型网站的用户数量相形见绌)可以选择提供所需功能的提供商。 (换句话说,让市场反击。)