使用PHP实现组合授权(OAuth,OpenID等)

时间:2011-03-25 07:31:15

标签: php oauth openid authentication

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

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

1 个答案:

答案 0 :(得分:0)

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

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

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

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