代码之家  ›  专栏  ›  技术社区  ›  Steve-o

基于IDP发现的OpenID的PHP实现?

  •  1
  • Steve-o  · 技术社区  · 15 年前

    谷歌有一个非常好的用户友好的联邦OpenID登录与automagic端点发现:

    这是在Java Servlet中实现的,是否有PHP等价物可以与PHP OpenID一起使用?

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

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

    它看起来像“diso的xrds simple”应该可以工作,但基本测试并不能提供有用的结果。

    • 代码:google.com/p/diso/

    谢谢,

    1 回复  |  直到 15 年前
        1
  •  1
  •   Steve-o    15 年前

    好吧,我发现修改xrds简单实现来支持Google的主机元发现机制相对简单。需要注意的是,这是Google名称空间内的一种实验性发现机制,稍后应该改为更适合于全球独立系统的机制。

    xrds简单补丁:

    查找要馈送到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";
    }
    
    ?>