我看过很多关于验证 RESTful API 的不同解决方案的不同帖子,鉴于当前的情况,我有一些问题。
我已经构建了一个 REST API,它将允许我的软件服务的客户(我们是一家 B2B 公司)以编程方式访问资源。现在我已经让 API 正常工作,我想以最标准化的方式保护它。我需要根据 API 的调用者允许访问某些资源。也就是说,并非所有 API 的用户都可以访问所有资源。
我有以下格式的 URL:
https://mydomain/api/students
https://mydomain/api/students/s123
https://mydomain/api/students/s123/classes
https://mydomain/api/students/s123/classes/c456
到目前为止,我已经提出了这些可能的解决方案:
为每个客户端提供一个唯一密钥,他们可以使用该密钥最终生成一个加密令牌,该令牌将在每个 REST 调用结束时作为 GET 参数传递,以(重新)验证每个请求。这种方法是否太昂贵
在 HTTP 授权标头中提供一个值,如此处所示。这和#1几乎一样吗?(除了我无法将 URL 粘贴到浏览器中)人们不再使用这些标题了吗?
使用 OAuth 2(我还不清楚)。OAuth 2 是否真的将客户端验证为登录用户?这难道不违背 REST API 无状态的精神吗?我希望 OAuth 对我来说是正确的解决方案(因为它是一个公共标准),但是在阅读了一点之后,我不太确定。REST API 调用是否矫枉过正和/或不当?
我的目标是提供一个不需要为每个想要使用该 API 的客户更改的 API,而是我可以提供一个标准文档,供我们所有的客户使用。
如果我不清楚,我很乐意发布更多细节。