从安全角度来看,在基本身份验证和令牌身份验证之间哪个更好



我目前正在开发一个RESTful API服务器,我正在使用ID and password或使用token对用户进行身份验证之间进行选择。

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

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

其他服务使用token的原因是什么?

从安全角度来看,哪一个更好,或者有更好的方法吗?

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

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

  • 你知道什么。这可以是用户名和密码的组合,也可以是一些特殊的令牌
  • 你有什么。可能是一些硬件生成了额外的一次性密码——你手机上的谷歌验证器应用程序,或者在某个时间到期后收到的带有OTP的短信
  • 你是什么。例如,这是你眼睛的指纹或视网膜
  • 你在哪里。如果适用于您的设置,这可以是源的IP地址
  • 你的行为。您使用该服务的正常方式是什么

等。

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

您将如何向客户端库提供凭据?我认为这是最棘手的部分。如果这些凭据在服务器上保存为配置(或者更糟的是硬编码(,那么存储是否足够安全?谁可以访问它。你能避开它吗?

如果您的合作伙伴公司意识到用户名/密码被泄露,会发生什么?他们自己能轻易改变吗?或者您可以以多快的速度撤销被盗凭据的权限?

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

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

注意:我不把ID算作秘密,因为它通常比秘密更容易猜测。

我会选择一个更易于实施和管理的解决方案。

IMHO这将是HTTP基本身份验证,因为您通常会得到框架/web服务器的完全支持,在身份验证逻辑中几乎不会出现安全错误。你知道,朋友不会让朋友自己写授权书。(

相关内容

  • 没有找到相关文章

最新更新