3

在我的 asp.net Web 服务中,用户密码已存储为哈希值,使用

 BCrypt.Net.BCrypt.HashPassword (password, BCrypt.Net.BCrypt.GenerateSalt ());

而且我的 Web 服务也需要实现基于令牌的身份验证。我对此并不陌生,正如我从阅读身份验证令牌中了解到的那样,密码也以散列字符串的形式出现。所以我不知道如何验证身份验证令牌,因为我不知道任何一方的原始密码。真的需要在身份验证令牌中对密码进行哈希处理吗?或者我可以将密码作为 base 64 编码字符串附加到身份验证令牌吗?安全吗?

4

1 回答 1

3

令牌通常是与密码等任何其他信息无关的随机数/字符串。

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

优点是:

  • 应用程序可以将身份验证委托给服务。
  • 无需为以下请求公开用户名和密码。
  • 不同的应用程序可以共享令牌,而无需知道用户名和密码。
  • 该服务可以处理到期日期。
  • 令牌比短用户密码强得多,因此可以更简单地处理。示例:令牌的哈希可以很快并且可以在不加盐的情况下存储,以便可以搜索它们。
于 2016-01-14T09:04:08.990 回答