在我的 asp.net web 服务中,用户密码已使用
存储为哈希值 BCrypt.Net.BCrypt.HashPassword (password, BCrypt.Net.BCrypt.GenerateSalt ());
我的网络服务也需要实现基于 token 的身份验证。我对此很陌生,据我所知,通过阅读身份验证 token ,密码也以散列字符串的形式出现。所以我不知道如何验证身份验证 token ,因为我不知道任何一方的原始密码。真的需要在身份验证 token 中散列密码吗?或者我可以将密码作为 base 64 编码字符串附加到身份验证 token 吗?安全吗?
最佳答案
token 通常是一个随机数/字符串,与密码等任何其他信息无关。
您可以实现一个身份验证服务,该服务需要一次密码,如果密码正确则可以返回一个 token 。稍后客户端可以发送 token 而不是密码来对用户进行身份验证。应用程序可以询问服务此 token 是否有效。
优点是:
- 应用程序可以将身份验证委托(delegate)给服务。
- 无需为后续请求公开用户名和密码。
- 不同的应用程序可以在不知道用户名和密码的情况下共享 token 。
- 该服务可以处理过期日期。
- token 比短用户密码强得多,因此可以更简单地处理。示例: token 的哈希值可以很快,并且可以在不加盐的情况下存储,因此可以搜索它们。
关于c# - 基于 token 的身份验证和哈希密码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34783577/