使用令牌是否违反REST原则

时间:2017-12-04 14:39:25

标签: rest api

使用令牌进行身份验证会破坏REST原则,这应该是无状态的。

我有一个需要REST的应用程序,我在数据库中存储了一些令牌。每次用户想要执行某个操作时,他们都应该获得一个令牌(通过发送用户名和密码),并在每次请求时将其发送到服务器。

4 个答案:

答案 0 :(得分:2)

不,他们,不要。

认证标题之类的关键方面是它与请求本身正交。它的属性与Content-Type标头相同。

只要提交标头的请求结果一致,后端如何在后端实施身份验证与讨论没有密切关系。验证标头的过程没有理由不能成为无状态过程本身。

身份验证的存在和内容肯定会影响客户端从请求中收到的内容,从403 Unauthorized响应到有限数量的内容,具体取决于客户端是否使用" admin&# 34;令牌与非特权用户。

它也与Cookie形成对比,Cookie表示会话状态(不是RESTful)。这是因为这两个标头用于不同的目的并提供不同的应用程序语义。

答案 1 :(得分:1)

身份验证令牌是验证REST客户端的标准方法。

只要基于传递给API的Auth令牌,您的API行为不同,

身份验证令牌本身就不会违反REST原则。

即。如果2个消费者使用不同的身份验证令牌放置相同的请求,并且允许他们执行该操作,则结果应该相同。

您可以在此处找到有关REST API身份验证的更多信息:https://dzone.com/articles/api-security-ways-to-authenticate-and-authorize

答案 2 :(得分:1)

不,这不会违反无状态规则。

为什么?

因为服务器没有维护与客户端的任何会话。只是验证客户端提供的令牌并基于此返回结果。

如果其客户端必须维护与会话有关的任何数据(在令牌的情况下发生,因为它们是随每个请求发送的),那么它没有违反REST原理,由于服务器未维护,它仍然是无状态的会话或与会话相关的数据。

希望有帮助。

答案 3 :(得分:1)

它确实违反了Rest原则,因为一旦服务基于登录凭据生成了临时令牌,该服务便不再是无状态的。对于使用该令牌进行的每次调用,服务必须自行检查令牌是否已过期(令牌现在是系统状态的一部分)。

在任何时候都不能说会话独立于客户以前的所有操作,因为如果他们没有正确登录,他们甚至无法使用系统。

但是您应该使用登录名和令牌,并以这种小的方式破坏Restfulness的安全性。