PHP实现基于IdID发现的OpenID?

时间:2009-09-19 04:26:30

标签: php openid service-discovery

Google提供了一个非常好的用户友好型联合OpenID登录功能,可以自动发现端点:

这是在Java Servlets中实现的,有没有可以与php-openid一起使用的PHP等价物?

发现机制XRDS包含在以下文档中:

  • groups.google.com/group/google-federated-login-api/web/openid-discovery-for-hosted-domains

看起来像“DiSo的XRDS-Simple”应该有效,但基本测试不能提供有用的结果。

  • code.google.com/p/diso /

谢谢,

1 个答案:

答案 0 :(得分:1)

好的,我发现修改XRDS-Simple实现以支持Google的Host-Meta发现机制相对简单。需要注意的是,这是Google命名空间中的一个实验性发现机制,应该稍后更改为更适合全球独立系统的内容。

XRDS-Patch的补丁:

查找要提供给PHP-OpenID的身份URL的示例用法:

<?php

require_once 'XRDS.php';
require_once 'XRDS/Discovery.php';

$domain = 'google.com';

$disco = new XRDS_Discovery();
$disco->discovery_methods = array('XRDS_Discovery_Host_Meta');
$xrds = $disco->discover('https://www.google.com/accounts/o8/.well-known/host-meta?hd=' . $domain);

$xrd = $xrds->xrd[0];
$identityUri = $xrd->service[1]->uri[0]->uri;

if (0 == strcmp($xrd->canonicalId, $domain)) {
    echo "identity uri: $identityUri\n\n";
} else {
    echo "discovery failed.\n\n";
}

?>