繁体   English   中英

使用Slim Framework的REST客户端密钥

[英]API Client Secret with REST Using Slim Framework

我有一个简单的REST API(使用Slim框架)设置,用户可以调用这样的页面:

subdomain.domain.com/api/musician/id/3273

检索并显示一些简单的JSON数据。

我想为此添加一些身份验证,以便只有具有某种客户端ID(至少)的用户才能访问此数据。 我希望用户能够在URL中传递他们的客户端密钥/ id信息,但是我想在没有过多地编写REST结构的情况下将其拉出来。

是否有某个框架或库对实现这一目标特别有效?

我也有这个问题已经有一段时间了,我也有一个问题没有关于这个主题的答案(在这里)。

基本上你的选择是OAuth或自定义。

现在,对于oauth,他们正在使用2.0版,你不应该使用OAuth 1开始一个新项目,但问题是,oauth2还远没有完成,现在几乎没有支持oauth2服务器的php。 我不想说oauth2 2-legged / 3-legged是复杂的,但它比它应该更多,并且在阅读了很多关于这个的帖子之后,我决定现在,我应该选择别的东西,而不是oauth(也是,其中一个oauth创建者离开了项目,因为他对这个项目的方向不满意),因为它处于“未定”的状态(当然人们会认为它已经准备就绪,但我不在乎,我想要已经证实的东西,不想成为大公司测试oauth的实验室老鼠[是的,oauth为大公司的利益而不是你的利益])。

无论如何,回到我的问题,我总是喜欢亚马逊使用他们的api的方式,它实现起来非常简单,那么为什么不朝着同一个方向前进呢? 我的意思是,亚马逊是最大的api供应商之一,如果他们使用它,他们有一个真正的理由这样做。
说完了,在不到两个小时的时间里,我的身份验证/授权协议已经启动并运行了,猜猜是什么,这很容易,很简单,我喜欢写它(不会因为oauth而感到沮丧)。 一篇帮助我开始的好文章是这样的: http//www.thebuzzmedia.com/designing-a-secure-rest-api-without-oauth-authentication/它基本上扼杀了你必须做的事情。

所以,如果我是你,我会从那里开始:)

如果您的API客户并非“代表”您的用户,那么OAuth在我看来是过度的。

您可以发布的标准API密钥将起作用。 如果需要,您还可以添加请求签名。

一些苗条的例子: 这里这里

也许这可能是有用的苗条HttpBasicAuth

您可以对每个请求使用HTTP基本身份验证来验证执行请求的用户是否是有效用户。

由于REST是无状态的,如果你想为不同的用户(ergo - 有状态)想要不同的数据表示,你几乎需要对它进行屠宰,这意味着每次请求你都会提供与特定实体无关的数据(关于用户状态)。

因此,无论是每次验证用户,还是临时cookie +会话,或者如果您涉及第三方,都要验证OAuth。

另请参阅Dave Ingram - API设计演示文稿

暂无
暂无

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

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