具有通配符域的Google联合登录(混合OpenID + OAuth)

时间:2013-05-21 09:13:48

标签: oauth openid

我正在尝试实施Google的OpenID+OAuth协议,当openid.realm包含通配符时它不起作用:

openid.realm: http://*.example.com
openid.ns.oauth = http://specs.openid.net/extensions/oauth/1.0
openid.oauth.consumer = www.example.com
openid.oauth.scope = https://www.googleapis.com/auth/userinfo.profile

OpenID流程按预期工作,但OAuth扩展名被静默忽略(响应中没有request_token;也没有错误)。

根据documentation,这似乎得到了支持:

  

使用自动界面注册您的域名,请记住   注册域必须与realm参数一致   与OpenID一起使用。例如,域名“www.somedomain.com”   与“http://*.somedomain.com”的领域一致。

它适用于http://www.example.com领域(回调接收request_token参数),但我无法更改领域,因为这会阻止现有用户再次登录。

我做错了什么?

2 个答案:

答案 0 :(得分:0)

consumer必须是实际的域名,而不是通配符。此外,*.example.com指定了example.com的子域名; example.com http://*.example.com

一致

Goggle文档不清楚,但您可能需要register your website with Google才能将OpenID + OAuth与通配符域一起使用。正如您所看到的,JohnS能够让OpenID+OAuth with a wildcard domain处理与您的设置存在的任何记录差异(除了使用ex2而不是ouath作为命名空间别名,这无关紧要)。

答案 1 :(得分:-1)

您的问题特别针对带有通配符选项的openid.realm:

经过身份验证的领域。

标识要求最终用户信任的域。 (例如:“http://*.myexamplesite.com”)此值必须与openid.return_to 中定义的域一致。如果未定义此参数,Google将使用openid.return_to中引用的网址。

在Google联合登录页面上使用领域的价值来识别用户的请求站点。它还用于确定Google返回的持久用户ID的值。

注意:如果您一直使用OpenID和OAuth,只要OpenID领域参数值与之匹配,您就可以使用 相同的域名注册OAuth使用者参数值 。如果值不匹配,请重新注册与OpenID域值一致的域,或更改域的值。但是,如果现有用户使用OpenID,则更改域可能不是一个可行的选项。

关于 OAuth扩展的另一个重要事项:

这通常是DNS域名。必须与领域的值一致(例如,realm = example.com和ext2.consumer =“www.example.com”,或者realm =“http:// * somedomain.com“和ext2.consumer =”www.somedomain.com“)。