作为安全性观点,在基本身份验证和令牌身份验证之间哪个更好

问题描述 投票:0回答:2

我目前正在开发RESTful API服务器,我在选择使用ID and password还是使用token来认证用户之间进行选择。

让我,先解释一下我的情况。我需要在库中包括静态身份验证信息,以在客户端和服务器之间进行通信,或者将其提供给合作伙伴公司以在其服务器和服务器之间进行通信。当我研究与我们处于类似情况的其他服务时,它们现在正在使用token(例如,Bugfender正在使用token来指定用户)。

但是,我认为使用ID and PW和使用token相同或使用ID and PW更好,因为有两个因素可以比较它是正确还是不正确。

为什么其他服务正在使用token

从安全角度来看哪个更好,或者有更好的方法可以做到这一点?

rest security
2个回答
0
投票

如果凭据(ID和密码)和令牌通过TLS安全通道以相同方式(例如,通过REST请求中的标头)传输,则唯一的区别在于密码的熵VS的熵令牌。由于这两种情况都由您决定,因此从安全性角度来看并没有真正的区别。

注意:我不将ID视为秘密,因为通常比秘密应该容易猜测的多。

我会寻求一个易于实施和管理的解决方案。

恕我直言,这将是HTTP基本身份验证,因为您通常会从框架/ Web服务器获得全面支持,而几乎没有在身份验证逻辑中犯安全错误的危险。要知道,朋友不要让朋友写自己的身份验证。 ;)


0
投票

我认为,如果要在客户端上使用固定的用户名/密码或某个固定的令牌,则安全级别是相同的。

用户名和密码不被视为多因素身份验证。多因素意味着您通过多种因素之一对某人进行身份验证:

  • 你知道的。这可以是用户名和密码或某些特殊令牌的组合。
  • 你有什么。可能是某些会生成额外的一次性密码的硬件-您电话上的Google身份验证器应用程序,或在一段时间后收到带有OTP的SMS。
  • 你是什么。例如,这是您的指纹或眼睛的视网膜。
  • 您在哪里。如果适用于您的设置,则可以是原始IP地址。
  • 你的行为。您正常使用服务的方式是什么。

也许不必提及,令牌和用户名/密码组合都必须在加密的请求中携带(我相信您正在使用HTTPS)。否则,客户的身份可能会被盗。

您将如何向您的客户端库提供凭据?我认为这是最棘手的部分。如果将这些凭据保存为服务器上的配置(或更糟糕的硬编码),那么该存储足够安全吗?谁将有权使用它。你可以避免吗?

如果您的合作伙伴公司意识到用户名/密码被盗,会发生什么?他们可以自己轻松更改它吗?还是您可以多快的时间撤销被盗凭证的权限?

我的建议也是将审核日志保留在您的服务器上,记录客户端请求的活动。如果您使用欧洲服务器,也请记住GDPR,请根据要审核的日志检查您所在国家/地区的类似规定。

© www.soinside.com 2019 - 2024. All rights reserved.