c# - 基于 token 的身份验证和哈希密码

标签 c# web hash password-protection http-token-authentication

在我的 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/

相关文章:

c# - .NET Core 2 中的状态服务器 session 状态

c# - 快速检查 C# 命名空间

c# - 编写分析 XML 数据的递归方法

Swift - 将参数传递给 Web 服务

Perl:按值降序对哈希值进行排序

c# - 处理 C# ADO.Net 应用程序中的泄漏

date - 对于国际网络应用程序,我应该使用哪种日期格式?

javascript - 如何使用通用 header 导入和 jquery 脚本在网站中布局代码?

python - {frozenset()} 中的 set() 如何/为什么工作?

asp.net-mvc - mvc sitemapprovider 哈希片段