【问题标题】:lightopenID for university Google-hosted email大学 Google 托管电子邮件的 lightopenID
【发布时间】:2012-08-14 01:29:04
【问题描述】:

我目前正在尝试为大学的小型网站实施 openID。我对此很陌生,并跟进了相关文章。我已经下载了 lightopenId 并将文件夹上传到我的网络服务器。我的学校有谷歌托管他们的电子邮件服务,所以典型的电子邮件地址是:像这样studentlastname@myuniversity.edu。我们可以通过mail.google.com或者google专门为我们的登录mail.google.com/a/oakland.edu/设计的自定义网页登录。

我可以将用户定向到自定义大学 google 托管页面进行身份验证,而不是将用户重定向到一般 $openid->identity = 'https://www.google.com/accounts/o8/id';?

给我错误:

在http://mail.google.com/a/oakland.edu/accounts/o8/id 找不到 OpenID 服务器

openid.php:

<? 
    <?php
    require 'openid.php';
    try {
        # Change 'localhost' to your domain name.
        $openid = new LightOpenID('http://webprolearner.ueuo.com');
        if(!$openid->mode) {
            if(isset($_GET['login'])) {
                $openid->identity = 'mail.google.com/a/oakland.edu/accounts/o8/id';
                header('Location: ' . $openid->authUrl());
            }
    ?>
    <form action="?login" method="post">
        <button>Login with Google</button>
    </form>
    <?php
        } elseif($openid->mode == 'cancel') {
            echo 'User has canceled authentication!';
        } else {
            echo 'User ' . ($openid->validate() ? $openid->identity . ' has ' : 'has not ') . 'logged in.';
        }
    } catch(ErrorException $e) {
        echo $e->getMessage();
    }

【问题讨论】:

    标签: php openid lightopenid


    【解决方案1】:

    据我所知,您的正确身份是:

    https://www.google.com/accounts/o8/site-xrds?hd=oakland.edu
    

    此 url 返回一个有效的 XRDS(因此 LightOpenID 将找到一个服务器)。

    请注意,如果服务器配置不正确,您在调用validate() 时可能会遇到类似的错误。

    【讨论】:

    • 哦,但是我确实得到了:在oakland.edu/openid?id=103676657823296937874 找不到 OpenID 服务器。我现在能做什么?
    • 请有能力的人返回 Oakland.edu/openid 上的 xrds 文档,或重定向到该文档。例如,通过包含以下代码:&lt;?php header('X-XRDS-Location: https://www.google.com/accounts/o8/site-xrds?hd=oakland.edu'); ?&gt;。不幸的是,没有其他方法可以解决它,除非您想破解库以检查“有效”网址(并破坏 openid 规范)。
    • +1 好吧,我开始明白了。关于同一主题,我找到了您的另一个答案。我将不得不请学校管理员这样做。 xrds 文档在我的场景中会是什么样子?是否需要创建一个名为openid 的文件夹,然后将xrds 文档放在学校服务器内?
    • /openid 应该发送一个 X-XRDS-Location ,其中包含我在之前的评论(和我的回答)中提到的 url。如果您不能这样做,请发送一个 Location 标头重定向到该 url。当且仅当您不能这样做时,返回带有&lt;meta http-equiv="X-XRDS-Location" content="https://www.google.com/accounts/o8/site-xrds?hd=oakland.edu"&gt; 的html 文件。如果您以静态方式提供文件,那么如果 google 更改某些内容,您就有可能破坏它。
    • 感谢您对我的耐心。我是这项技术的新手。我已经编辑了我的答案是 XRDS 在学校服务器中应该是什么样子?现在我必须重定向到那个 xdrs 文档?
    猜你喜欢
    • 2013-03-08
    • 2018-04-19
    • 1970-01-01
    • 2023-03-29
    • 1970-01-01
    • 1970-01-01
    • 2017-12-04
    • 2018-01-12
    • 1970-01-01
    相关资源
    最近更新 更多