我正在使用Symfony2在PHP中编写REST API。此API旨在供各个网站用于访问数据,这将由客户端库完成。
我需要保护API,但事实证明这有点令人困惑。我做了一些研究,据我所知,一个好方法似乎是使用OAuth2和客户端凭证流(参见RFC草案)。我不得不承认,我对这究竟是如何工作的细节仍然很模糊,但我一直在阅读它是如此简单。我想我的第一个问题是:这是走的路还是我朝错误的方向走了?我应该使用其他方法来验证客户端吗?请记住,我需要身份,身份验证和授权。
如果是,使用客户端凭据的OAuth2就是这样,那么我问:在PHP中完成此操作的最佳方法是什么?有人真的这样做过吗?到目前为止,我一直试图使用oauth2-php和bundle而没有太多运气。虽然我不太确定,但该捆绑似乎专注于三足认证。我想知道最好的行动方案是使用oauth2-php软件包手动吗?
我非常感谢有关此事的任何信息。提前谢谢!
答案 0 :(得分:4)
海达尔,
我目前正在开展一个类似的项目,这是我到目前为止所发现的。
Oauth正式授权一个网站上有其他资源的网站,Facebook发现整个分离的自动化和身份验证让其开发人员基础混乱,并开始使用Oauth。因为它是开发人员一直在标记的主要参与者。
即使我不确定您在声明中对Identity部分的意思,您还需要“身份,身份验证和授权。”
你可以将Oauth用于其他两个,从所有大型互联网公司这样做的事实中扣除(在这方面我能做到最好,Oauth docs说这只是授权)。
Google提供了一个维护良好的客户端库:http://code.google.com/p/google-api-php-client/wiki/OAuth2
此外,对于服务器端库,我会在https://github.com/quizlet/oauth2-php转向oauth2-php,但请参阅此帖子了解更多详情:Are there OAuth 2 server side PHP or Java implementations?
并且在三条腿认证方面请看这里的答案(它真的很广泛,但解释得很好)OAuth 2.0: Benefits and use cases — why?
请记住,尽管我仍然在努力实现这一目标。