标签: lightopenid

OpenId支持Yii

我想在Yii中使用OpenID支持.

在研究了可能的插件之后,我找到了这两个插件.一个用于OpenidSelector,另一个用于LightOpenId

http://www.yiiframework.com/extension/simpleopenidselector/

http://www.yiiframework.com/extension/loid

这些是在Yii中用于OpenId支持的正确扩展吗?还要别的吗?如果这些扩展是正确的,我想了解如何处理这些扩展.

这是我认为我需要按照页面上的说明安装它们.

  1. 创建OpenIdUserIdentity扩展CUserIdentity并将authenticate()代码放在那里
  2. 创建一个登录页面并将simpleopenidselector代码放在视图中.
  3. 在siteController中创建一个actionOpenIdLogin方法

然后我有点迷失,因为我不理解Loid中的Usage样本,我不知道如何做(1)和(3).

如果我走在正确的轨道上并且可能提供一些指导,请告诉我.谢谢.

openid openid-selector yii lightopenid

22
推荐指数
2
解决办法
2974
查看次数

Google是唯一需要"identifier_select"的OpenID提供商吗?

我正在用PHP开发一个OpenID消费者,并使用了梦幻般的LightOpenID库(http://gitorious.org/lightopenid).基于我在示例客户端脚本中找到的代码,我已成功创建了一个使用者.不过,我已经跨越了障碍跑:谷歌需要openid.identityopenid.claimed_id被设置为"http://specs.openid.net/auth/2.0/identifier_select"(见这里).如果我这样做它可以工作,但其他提供商(即AOL)不这样做.

这是我的问题:

  1. 谷歌是一个极端的案例 - 它是唯一需要的OpenID提供商identifier_select,与OpenID规范相反吗?
  2. LightOpenID库中有缺点吗?
  3. 我对OpenID如何工作的理解不正确吗?
  4. 如果Google不是唯一需要的提供商,identifier_select那么我只需硬编码就可以获得有限数量的提供商,或者通过OpenID规范确定这一点?

我是OpenID内部的新手,所以如果这是一个愚蠢的问题,我不会感到惊讶.在搜索互联网后,我无法找到有关此主题的任何信息.

php openid lightopenid

13
推荐指数
2
解决办法
1396
查看次数

LightApp上的LightOpenID validate()失败

我正在使用LightOpenID对Google Apps进行OpenID身份验证.我做了初始的authURL()请求,事情很好.我调用validate()并且失败了.通过丰富的回声,我已将其追溯到最后几行validate().

从validate(),传递给discover($ url)的url是 https://www.google.com/accounts/o8/user-xrds?uri=http://my-domain.com/openid?id=117665028262121597341

discover()首先检查xrds-location,这是不存在的.discover()接下来检查内容类型是否为xrds + xml,这是真的.discover()检查Service(.*)/ Service,这是真的.这是服务,/服务的片段

<Service priority="0">
<Type>http://specs.openid.net/auth/2.0/signon</Type> 

<Type>http://openid.net/srv/ax/1.0</Type>
<Type>http://specs.openid.net/extensions/ui/1.0/mode/popup</Type>
<Type>http://specs.openid.net/extensions/ui/1.0/icon</Type>
<Type>http://specs.openid.net/extensions/pape/1.0</Type>
<URI>https://www.google.com/a/<my domain>.com/o8/ud?be=o8</URI>
</Service>
Run Code Online (Sandbox Code Playgroud)

discover()看到我们正在使用OpenID 2并将URI字段提取到$ server变量中.discover()继续提取CanonicalID,发现Google支持AX而不是SREG.最后,discover()返回$ server ashttps://www.google.com/a/my-domain.com/o8/ud?be=o8

validate()继续清理data []中的每个字段,具体取决于magic_quotes.它将openid.mode设置为'check_authentication',请求发现($ url)返回的$ server和'/ is_valid:true'的preg.这是最后一个preg_match失败了.$ server url不返回验证,而是说"您请求的页面无效".

我正在寻找的答案是Google Apps验证的正确网址.紧随其后的是网址应该是什么样子,我将深入了解Google Apps返回的信息,看看我是否有类似的东西.

增加:不确定这是否重要,但我确实有/.well-known/host-meta文件.以下是内容: Link: <https://www.google.com/accounts/o8/site-xrds?hd=my-domain.com>; rel="describedby http://reltype.google.com/openid/xrd-op"; type="application/xrds+xml"

如果您需要更多代码或数据,请告诉我们.

谢谢,Eric B.

php openid google-apps lightopenid

12
推荐指数
1
解决办法
1034
查看次数

使用LightOpenID登录用户

您好
我几个小时前已经下载了LightOpenID(http://gitorious.org/lightopenid),但仍然无法弄清楚如何使它工作.
我把这个google示例保存在test.php文件中

<?php
require '../lib/init.php';
require '../lib/openID/openid.php';

try {
    if(!isset($_GET['openid_mode'])) {
        if(isset($_GET['login'])) {
            $openid = new LightOpenID;
            $openid->identity = 'https://www.google.com/accounts/o8/id';
            header('Location: ' . $openid->authUrl());
        }
?>
<form action="?login" method="post">
    <button>Login with Google</button>
</form>
<?php
    } elseif($_GET['openid_mode'] == 'cancel') {
        echo 'User has canceled authentication!';
    } else {
        $openid = new LightOpenID;
        echo 'User ' . ($openid->validate() ? $openid->identity . ' has ' : 'has not ') . 'logged in.';
    }
} catch(ErrorException $e) {
    echo $e->getMessage();
} …
Run Code Online (Sandbox Code Playgroud)

php openid lightopenid

10
推荐指数
3
解决办法
1万
查看次数

PHP:LightOpenID,如何从提供商处获取帐户数据?

我遇到一个名为LightOpenID的小型OpenID库问题 .我可以对几乎所有提供商进行身份验证,但我不知道如何从提供程序获取数据.我只用print_r()得到了Array(),eaven.

php openid fetch lightopenid

8
推荐指数
1
解决办法
3057
查看次数

使用OpenID进行身份验证后在REST应用程序中管理会话

我正在构建一个RESTful应用程序.我计划使用OpenID进行用户身份验证.目前,我使用LightOpenID进行OpenID身份验证,我可以对我的用户进行身份验证.

我的问题是下一步什么?认证后!

  1. 因为,它是一个REST应用程序,我将不得不使用Cookie进行会话管理..对吗?
  2. 我在Cookies中存储了什么值?
  3. 如何验证会话和用户注销?

我确实搜索了有关实现的示例,但所有示例都停止了身份验证,并且没有谈论会话管理!我想知道您如何管理应用程序中的会话,以及在实施方法时可能的最佳实践和关注点.

如果您了解任何参考实施,请提供链接.

php openid session session-management lightopenid

7
推荐指数
1
解决办法
4878
查看次数

使用LightOpenID获取Google通讯录?

我目前正在使用LightOpenID来允许用户登录我的网站,在那里我可以自动提取他们的用户名和电子邮件地址:

$openid->required = array('namePerson/first', 'namePerson/last', 'contact/email');
$openid->identity = 'https://www.google.com/accounts/o8/id';
Run Code Online (Sandbox Code Playgroud)

在这里我使用的参数namePerson/first,namePerson/lastcontact/email.

我知道为了获得用户联系人列表,我必须使用feed:

https://www.google.com/m8/feeds
Run Code Online (Sandbox Code Playgroud)

但是,我似乎无法弄清楚我需要使用哪些参数?

如果我完全删除参数行,我只会得到一个空数组.

任何人都可以帮我弄清楚我需要哪些参数来获取联系人?

这是我目前的代码:

<?php
    require '/var/www/libraries/openid.php';

    try {

        $openid = new LightOpenID;

        if(!$openid->mode) {

            //$openid->required = array('gd/fullName');
            $openid->identity = 'https://www.google.com/m8/feeds/contacts/oshirowanen.y%40gmail.com/full';
            header('Location: ' . $openid->authUrl());
            exit;

        } elseif($openid->mode == 'cancel') {

            echo "cancelled";
            exit;

        } else {

            if ( $openid->validate() ) {

                $returned = $openid->getAttributes();
                print_r($returned);

                exit;

            } else {

                echo "something is wrong";
                exit;

            }

        }

    } catch(ErrorException $e) {

        echo …
Run Code Online (Sandbox Code Playgroud)

php google-api google-contacts-api lightopenid

7
推荐指数
1
解决办法
977
查看次数

使用Google新OAuth2系统的LightOpenID

我想为我的Web应用程序实现一个OpenID登录系统.我正在使用LightOpenID.我去了Google,发现旧的(有文档记录的在线)OpenID2系统变老了:

重要提示:Google已弃用OpenID 2.0,并会在迁移期后将其关闭.如果您的应用程序使用OpenID 2.0,用户信息端点,或OAuth 2.0用户登录(早期版本),你应该在给定的期限迁移应用程序的迁移时间表.

那么,我如何为Google使用相同的OpenID兼容逻辑?

php openid lightopenid

7
推荐指数
1
解决办法
480
查看次数

OpenID发现方法 - Yadis VS HTML

最近,我开始编写自己的PHP OpenID消费者类,以便更好地理解openID.作为指南,我一直在引用[LightOpenID Class] [1].在大多数情况下,我理解代码以及OpenID的工作原理.在查看作者的discover功能时,我感到困惑:

function discover($url)
{
    if(!$url) throw new ErrorException('No identity supplied.');
    # We save the original url in case of Yadis discovery failure.
    # It can happen when we'll be lead to an XRDS document
    # which does not have any OpenID2 services.
    $originalUrl = $url;

    # A flag to disable yadis discovery in case of failure in headers.
    $yadis = true;

    # We'll jump a maximum of 5 times, to avoid endless redirections.
    for($i = …
Run Code Online (Sandbox Code Playgroud)

php openid lightopenid

6
推荐指数
1
解决办法
1461
查看次数

OpenID登录代码在实时服务器中失败

我想用最新的LightOpenID版本实现一个OpenID登录系统.我测试设置有由线的源代码行的例子(I刚刚更换localhost$_SERVER['HTTP_HOST']在构造).

问题是在我的私人网络(Windows Vista上的PHP/5.3.6)的开发框中一切正常,但在HSP公共网络(CentOS上的PHP/5.3.3)的生命服务器中验证总是失败.

我已经添加了var_dump()所有内容,我可以告诉你,代码的两个副本产生完全相同的请求参数并接收完全相同的响应参数(通过GET).只有openid.assoc_handle,openid.sig,openid.response_nonceopenid.return_to有不同的价值观,这是我的猜测是预期的行为.

但是,我的开发框从OpenID提供程序收到此信息(无论我使用哪一个):

is_valid:true
ns:http://specs.openid.net/auth/2.0
Run Code Online (Sandbox Code Playgroud)

......我的活狐得到了这个:

is_valid:false
ns:http://specs.openid.net/auth/2.0
Run Code Online (Sandbox Code Playgroud)

没有涉及任何非ASCII字符,因此它不能成为编码问题.我的托管服务肯定有问题,但我无法弄清楚是什么.

我需要有关可能原因和故障排除提示的建议.

php openid lightopenid

6
推荐指数
1
解决办法
888
查看次数