S.O.有许多优秀的问题(和答案)。围绕着REST和安全问题。许多人说“纯粹主义者不会喜欢这个,但是等等......”然后其他人说“你永远不应该这样做,因为等等等等”。授权RESTful服务的实用示例?
但我还没有看到解决方案“纯粹主义者”暗示以下情况。所以我的问题是 - 什么是以下场景的“纯RESTful解决方案”?
简单的场景...
试想建库/网站,让用户管理他们最喜爱的食谱。该网站公开了一个RESTful API,以便用户可以从他们想要编写的自定义程序(利用此API)查询和操作他们的列表。
因此,用户“A”有3个最喜欢的食谱,ID为“1”,“2”和“3”。
用户“B”有2个最喜欢的食谱,ID为“4”和“5”。
我们需要确保如果用户A发送DELETE
命令到/Recipes/4
他将得到一个Forbidden (403)
响应。
我通常会做...
我通常会做的是让他们先调用的验证方法,并把他们某种身份验证令牌,其有效期为30分钟左右。通常这个令牌将通过cookie传递。
什么是纯解决方案?
纯REST解决方案是否让它们将它作为查询字符串中的变量传递? Are cookies the devil?令牌应该作为URL的一部分使用(而不是查询字符串参数)?还有其他的东西可以清楚地回答这个问题吗?
这里有点迂回:我想你的情况下,你会想要一个403,而不是一个401。身份验证与服务,但在你的情况下,用户A是_forbidden_得到食谱4.我知道它doesn没有回答这个问题,但值得指出。 http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html显示了区别。 (重新认证不会帮助用户A看到配方4,因此是403)。 –
正确 - 实际上任何一个都是问题...首先401 - 如同,您是授权的,其次是403 - 如同您的“权限是什么” “ - 进入状态/会话/用户上下文辩论......无论哪种方式,问题依然存在。感谢您的澄清! –
是的,两者都很重要。最简单的解决方案当然是基于https的基本身份验证。我认为这是“纯粹的”。你在寻找替代品吗? –