我有一个简单的REST API(使用超薄框架)设置,用户可以调用一个页面是这样的:API客户端密钥
subdomain.domain.com/api/musician/id/3273
检索和显示一些简单的JSON数据。
我想为此添加一些身份验证,以便只有具有某种客户端ID(至少)的用户才能访问此数据。我希望用户能够在URL中传递他们的客户机秘密/ ID信息,但是我希望能够避免在REST结构中乱用太多的东西。
是否有某种框架或库对实现这一目标特别有效?
我有一个简单的REST API(使用超薄框架)设置,用户可以调用一个页面是这样的:API客户端密钥
subdomain.domain.com/api/musician/id/3273
检索和显示一些简单的JSON数据。
我想为此添加一些身份验证,以便只有具有某种客户端ID(至少)的用户才能访问此数据。我希望用户能够在URL中传递他们的客户机秘密/ ID信息,但是我希望能够避免在REST结构中乱用太多的东西。
是否有某种框架或库对实现这一目标特别有效?
我也是,有这个问题一段时间,我也有一个问题没有关于这个话题(这里如此)的答案。
基本上你的选择是OAuth或自定义的东西。
现在,对于oauth,他们正在使用2.0版本,并且您不应该使用OAuth 1启动一个新项目,但事实是,oauth2远远没有完成,并且对oauth2服务器的支持很少PHP现在。我不想说oauth2两腿/三腿是复杂的,但它比它应该更多,并且在阅读了很多关于这个的帖子之后,我决定现在,我应该与其他东西一起去,而不是oauth(也是oauth的创造者之一,因为他对这个项目的方向不满意而离开了这个项目),因为它处于“未定的”状态(当然人们会争辩说,它已经准备好使用了,但我不在乎,我想要已经证明的东西,不想成为大公司测试oauth的实验室老鼠[是的,oauth是为了巨大的公司利益,而不是你的])。
无论如何,回到我的问题,我总是喜欢亚马逊与他们的api一起工作的方式,它的实现非常简单,所以为什么不去同一个方向?我的意思是,亚马逊是最大的API提供商之一,如果他们使用它,他们有一个真正的理由这样做。
说了算,在不到两个小时的时间里,我的身份验证/授权协议开始运行,猜测是什么,这很容易,简单,我喜欢写它(不会因为oauth而感到沮丧)。 帮助我开始的一篇好文章是:http://www.thebuzzmedia.com/designing-a-secure-rest-api-without-oauth-authentication/,它基本上可以预见你必须做的事情。
所以,如果我是你,我就从那里:)
您的链接已断开 – 2016-11-25 05:04:11
因为REST是无状态的,所以如果你想为不同的用户提供不同的数据表示(ergo-stateful),那么你几乎需要屠宰它,这意味着每个请求你都会提供与用户状态无关的数据针对具体实体。
因此,无论是每次验证用户,还是临时Cookie +会话,或者如果您有第三方参与,都需要OAuth。
见也许这可能是有用的slim HttpBasicAuth
您可以使用HTTP基本身份验证每个请求验证如果做请求的用户是有效用户。
一些API服务需要你送的东西喜欢在请求的报头中的CLIENT_ID。用户可以使用cURL将自定义标题添加到他们的请求中,然后您可以在脚本中访问它们。 – Xeoncross 2013-04-22 13:48:06