REST - 用于检查授权的动词

标签 rest http authentication

我正在设计一个授权服务,其他在请求中接收 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/

相关文章:

Spring 4.2 Rest-Service 与 Hibernate 4 或 5 示例

react-native - 如何保持用户登录状态(使用 AsyncStorage 存储 userId)

node.js - Linux nodejs 休息服务只工作本地主机

url - 如何以 REST 风格获取只读资源与可编辑资源?

javascript - AngularJS $scope 变量仅通过 HTTP GET 设置一次

HTTP:重定向时,服务器是否立即发送响应?

php - 如何将 HTTP header /正文与 PHP 套接字请求隔离开来

mysql - OAuth(Facebook、Twitter)和基本登录 - 用户表

azure - Azure Blob 存储和 Verizon CDN Premium 中的 token 身份验证有什么区别?

php - MySQL : LEFT JOIN for 4 tables which are connected to each other