最近我在HTTP JSON REST API中读了一些关于HATEOAS实现的内容(因为我创建了一个),我理解了链接和操作的一般概念等等,并且定义了许多不同的格式,例如作为HAL,JSON API等
我不明白的是,HATEOAS / REST与身份验证之间的关系是什么,或者使其成为一个更具体的问题,什么类型的身份验证应该是正确的" HATEOAS / REST API使用?
显然,它应该是无状态的,比如JWT令牌或者类似的东西,但是有没有任何标准和/或规则/指南或认证是完全不同的主题?
修改
为了进一步澄清,我的问题不是我在选择要实现的身份验证时遇到问题,但我不知道API身份验证需要什么才能将其称为REST / HATEOAS API。
所以(假设的)场景将是:创建一个API,可以说在每个单词的意义上都是REST / HATEOAS并获得$ 1,000,000。制定一个违反协议的小错误并获得$ 0。意思是,目标不是做最有意义的事情,最有效率或者开发者和/或用户有什么好处,而只是成为100%的REST / HATEOAS,超越了疑点。
答案 0 :(得分:0)
就像你说的那样,你应该以独立的方式看待身份验证。
基于令牌的令牌实现的基于令牌的身份验证系统确实非常适合基于HTTP的API的无状态世界,所以这可能是建议给出最常见的场景。但是,您应该查看场景的特定要求以做出最终决定,也许有更简单的选项可用,如API密钥。
请记住,如果您选择基于令牌的方法,此后还有很多需要考虑的事项。如果您没有为应用程序定义获取访问令牌的方法,那么您的API将没有多大用处,并且您可以通过多种方式解决此问题,例如:
您可以滚动自己的系统并定义自己的流程,了解如何获取令牌,然后由API使用以执行身份验证。 ⤷ (不推荐,耗时且容易出错)
实施符合OpenID Connect和OAuth 2.0等可用身份验证标准的身份提供商/授权服务器系统 ⤷ (耗时且复杂,但通过遵循标准,您不太可能陷入困境,并且您还将获得互操作性)
将身份验证委派给第三方身份验证提供程序,如Auth0
⤷ (很容易上手,具体取决于使用量会花费你的钱而不是时间)
披露:我是Auth0工程师。