繁体   English   中英

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

[英]Implementing combined authorization (OAuth, OpenID etc) using PHP

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

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

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

我在一个简单的XenForo框架中实现了类似的功能(用于短网址驱动程序)。 我通过创建一个带有“ shorten($ url,$ method)”功能的泛型类并进行动态检查以确保该方法的驱动程序存在于指定目录中来完成此操作(XenForo具有Zend Framework的AutoLoading,因此我们可以利用它)构建函数调用。 然后,我将必要的信息传递给(仅$ url),并让驱动程序获取该信息。

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM