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的基本身份驗證。我認爲這是「純粹的」。你在尋找替代品嗎? –