基于令牌的身份验证和哈希密码

Token based authentication and hash passwords

在我的 asp.net 网络服务中,用户密码已使用

存储为散列值
 BCrypt.Net.BCrypt.HashPassword (password, BCrypt.Net.BCrypt.GenerateSalt ());

我的网络服务也需要实施基于令牌的身份验证。我对此很陌生,据我所知,通过阅读身份验证令牌,密码也以散列字符串的形式出现。所以我不知道如何验证身份验证令牌,因为我不知道任何一方的原始密码。真的需要在身份验证令牌中散列密码吗?或者我可以将密码作为 base 64 编码字符串附加到身份验证令牌吗?安全吗?

令牌通常是随机的 number/string,与密码等任何其他信息无关。

您可以实施身份验证服务,该服务需要一次密码,如果密码正确,则可以 return 一个令牌。稍后客户端可以发送令牌而不是密码来对用户进行身份验证。应用程序可以询问服务此令牌是否有效。

优点是:

  • 应用程序可以将身份验证委托给服务。
  • 后续请求无需暴露用户名和密码。
  • 不同的应用程序可以在不知道用户名和密码的情况下共享令牌。
  • 该服务可以处理到期日期。
  • 令牌比短用户密码强得多,因此可以更简单地处理。示例:令牌的哈希值可以很快,并且可以在不加盐的情况下存储,因此可以搜索它们。