我看过许多关于RESTful API身份验证不同解决方案的帖子,鉴于当前情况,我有一些问题。
我建立了一个REST API,允许我的软件服务客户(我们是B2B公司)以编程方式访问资源。现在我已经使API正常工作,我想以最标准化的方式保护它。根据API调用者,我需要允许访问某些资源。也就是说,并非所有API用户都能访问所有资源。
我可以使用以下格式的URL:
迄今为止,我想到了以下可能的解决方案:
如果我的表述不够清晰,我将很乐意发布其他详细信息。
我建立了一个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 调用来说,它是否过于复杂和/或不当?
如果我的表述不够清晰,我将很乐意发布其他详细信息。