我在Oauth2上为少数国内流离失所者实施了一个OpenIdconnect社交登录,但我没有让雅虎表现得如此。
我的问题:每次发送身份验证请求时,Yahoo都会提示最终用户同意。虽然这在第一次登录时是正常的,但是当授予许可时,它不应该反复询问相同的问题。
在https://developer.yahoo.com/oauth2/guide/ Yahoo提示用户在步骤3中,实际上它是在步骤1中完成的。虽然雅虎在第一次呼叫https://api.login.yahoo.com/oauth2/request_auth时提示用户是合乎逻辑的,但它不应该在每次其他呼叫时提示相同的同意。
Yahoo OAUTH2的其余部分运行正常。我得到了我需要的一切,虽然雅虎不符合OpenID-connect,但它仍然提供了用户的唯一ID和access_token。这允许管理联合并保存对概要API的调用。
我的问题:雅虎文档没有指定任何"范围"请求access_token时。文档不提供任何"查询"在已经同意的情况下允许无缝登录的属性。但是我可能会搞砸某个地方,因为它应该存在!!!
问题:是否有人成功使用Yahoo OAUTH2并在每次登录时都避免同意?
我的演示在以下位置可见:http://oidconnect.breizhme.net/demo/openidconnect/home它是在Laravel-5之上用PHP编写的。在将代码推送到GitHub之前,我会很高兴解决这个Yahoo错误。
答案 0 :(得分:2)
简短回答:如果你想使用雅虎作为用户身份验证的来源,你需要与它谈谈OpenID 2.0。
答案很长:我相信你正在混淆SSO和授权。 OpenID Connect确实是建立在OAuth 2.0之上的SSO协议。 OAuth 2.0本身就是用于API访问的委派。
对于客户端(非用户)访问其API(授权),Yahoo支持OAuth 2.0。需要代表Yahoo用户访问Yahoo API的客户可以使用OAuth 2.0授权代码授予来获取访问令牌,这意味着Yahoo的用户登录同意。除了访问令牌之外,客户端还在该流中获取刷新令牌。它可以使用刷新令牌在当前的访问令牌到期时获取新的访问令牌。如您所见,刷新令牌允许我们在客户端需要新的访问令牌时不再打扰Yahoo用户。
上一段显示了如何使用OAuth 2.0访问Yahoo的API。
雅虎不支持用户( SSO )对第三方网站的身份验证( SSO )的OpenID Connect,它只支持OpenID 2.0。因此,如果您想使用Yahoo作为身份验证/ SSO提供商,则需要使用OpenID 2.0,因为Yahoo 是OpenID 2.0提供商。
您正在尝试使用OAuth 2.0协议作为用户身份验证协议(或:OAuth 2.0提供程序作为身份验证提供程序)。这可能会产生严重的并发症,请参阅http://oauth.net/articles/authentication/
FWIW:Yahoo还不是OpenID Connect提供商。