【问题标题】:Implementing combined authorization (OAuth, OpenID etc) using PHP使用 PHP 实现组合授权(OAuth、OpenID 等)
【发布时间】:2011-07-22 17:31:33
【问题描述】:

我正在用 PHP 编写自己的身份验证库。我不仅想实现旧式登录/通过授权,还想实现 OAuth 和 OpenID 服务(可能还有其他服务)作为驱动程序。这些驱动程序将使用不同的数据(令牌或简单数组或其他任何数据),因此我需要为驱动程序创建单独的表 + 一个用于基本用户信息的主表(ID、Screenname 等)。

那么,如何实现(或使用现有的)身份验证库?我不是在寻求编码方面的帮助,只是想收集想法、howtos 和其他最佳实践。

【问题讨论】:

  • 你的英文没问题:)
  • 只想注意oauth是authorization协议,openid是authentication协议。
  • 但是两者都可以用于认证;)

标签: php oauth openid authentication


【解决方案1】:

如果我的理解正确,您想创建一个同时支持所有这些的库吗?那么用户 A 可以通过 OAuth 登录,而用户 B 可以通过 OpenID 登录吗?您正在创建的库将用于提供简单的“单向调用”?

我在一个简单的 XenForo 框架中实现了类似的东西(用于短 url 驱动程序)。我通过使用名为“shorten($url, $method)”的函数创建一个通用类来做到这一点,并动态检查以确保该方法的驱动程序存在于指定目录中(XenForo 具有 Zend Framework 的 AutoLoading,因此我们利用它)和构建函数调用。然后我在(仅 $url)上传递必要的信息并让驱动程序获取信息。

如果您要与用户一起存储所有必要的信息,您可以有一个“extraData”数据库字段,其中包含指定“方法”的所有必要信息,以可以传递给驱动程序的统一方式序列化或存储。

我和我的共同开发者选择了足够的抽象,以便我们能够发布它,并且任何其他开发者都可以轻松地为框架添加和安装新的驱动程序。如果您愿意,我可以提供示例代码,但它包含几个 XenForo 特定项目。说到这一点,我喜欢它的工作方式,并且可以在非 XenForo 特定的方法中实现它。

【讨论】:

  • 当然,显示你的代码:) 我会试着理解它。如果更简单,你可以使用伪代码。
  • 实际上,由于我有相当多的代码,我将发布一个可下载 zip 的链接。给我一两分钟来删除一些 XenForo 特定的部分。
  • 由于 Shorten 类有点长(而且我无法编辑我的最后一条评论),所以链接会更容易(不是插件)。我已经包含了 Shorten_URL 类以及一种演示基本结构的方法。我们开发了几种方法,每种方法都驻留在自己的文件中(用于自动加载器的目的),并包含 XenForo 特定的东西。但是,应该证明这一想法)。这是下载:link
  • 抱歉,不知道 /public_html/ 在哪里起作用,但这里是正确的:link
猜你喜欢
  • 2011-03-02
  • 2015-12-11
  • 1970-01-01
  • 2019-07-07
  • 1970-01-01
  • 2013-01-23
  • 2012-11-23
  • 2014-09-08
  • 1970-01-01
相关资源
最近更新 更多