我正在设计一个授权服务,其他在请求中接收 Authorization
header 的公共(public)服务将在内部查询该服务。
此服务处理授权(一对公钥 (user_id) 和私钥),其任务是重新生成签名 (HMAC) - 它是唯一知道私钥的服务 - 所以对我来说似乎是正确的将此标识为服务器资源。然后我考虑没有用户就没有授权资源,所以我最终得到了这个基本URI:
/user/:user_id/authorization
然后我设计了 CRUD 操作来处理授权,在创建新用户时创建,在请求时更新,在删除用户时读取和删除。
注意:用户实体由另一个服务处理,我只使用此 URI 以逻辑方式传递公钥(因为它与用户严格相关)。
我不确定我应该如何从其他服务查询此服务以说:“嘿,这个 key 正确吗?”与此请求一起传递重新生成签名所需的所有数据。
所以我需要一种以安静的方式检查授权的方法
我做过类似的事情:
GET /user/:user_id/authorization?signature=SOMETHING&data=JSON-DATA-TO-REGENERATE-KEY
但也许,我们也可以看到它正在创建一个新的授权资源(如果没有返回任何内容,它也不是 token 系统)从而使 PUT 或 POST 更适合此目的。
你的观点是什么?处理这种情况的正确方法是什么?
最佳答案
GET /user/:user_id/authorization?signature=SOMETHING&data=JSON-DATA-TO-REGENERATE-KEY
永远不要忘记 GET 方法应该是 ' safe '.它不应该“具有采取除检索以外的行动的意义”。换句话说,客户端“不应该请求副作用”。
关于REST - 用于检查授权的动词,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13200862/