特别是我对所声称的ID的验证感兴趣。 Google的说明涉及从声明的ID中检索域中的元数据,该ID包含指向XRDS文档的链接。对于谷歌应用程序,可以在
找到元文件http://example.com/.well-known/host-meta 要么 https://www.google.com/accounts/o8/.well-known/host-meta?hd=example.com
我的问题是这些主机 - 元路径都是google对规范的扩充还是仅仅是后者?我们正在尝试更新其中一个标准的open-id库以正确支持这一点,我们希望将支持谷歌扩充的代码保持适当的分离。
我似乎无法在open-id spec文件中找到任何对“.well-known / host-meta”的引用。
答案 0 :(得分:1)
协议本身主要是标准的 - 例如/.well-known/host-meta是LRDD发现规范的一部分。谷歌应用程序的问题与这样一个事实有关,即很少有域(如果有的话)托管他们自己的发现信息,因此尝试发现像example.com这样的域的提供者会失败。因此,Google有一个主机元文件的备用位置,想要支持Google Apps的OpenID RP需要注意。
此外,如果您要验证这些外包XRDS文件的签名,则需要允许hosted-id.google.com作为有效签名者。通常,您需要检查签名证书主题是否与您要发现的域名相同,但由于Google代表目标域进行签名,因此需要进行额外检查。
在相关的说明中,Google Apps支持已经直接或通过插件添加到一堆不同的库中:
PHP:php-openid + http://code.google.com/p/php-openid-apps-discovery/
Ruby:ruby-openid + http://code.google.com/p/ruby-openid-apps-discovery/
.NET:DotNetOpenAuth(内置)
Java:OpenID4Java + http://code.google.com/p/step2